我有一个csh后安装脚本,它是从rpm %post执行的,它的解释器行设置为#!/bin/csh (没有-f选项)。这将导致在执行脚本的其余部分之前读取文件/etc/csh.cshrc,根据bsd-csh(1)和tcsh(1)的手册页。我在/etc/csh.cshrc中有一些系统范围的环境变量和别名定义,脚本依赖它们才能正常工作。预期的行为是,当csh执行脚本时,它首先获取系统范围的定义,然后脚本成功运行。
这确实有效,至少在最初的某些条件下是这样。csh脚本总是在rpm %post部分中以相同的方式调用。但是,取决于应用程序rpm安装是如何执行的,脚本可能不会提取期望的变量和错误,因此在我看来,它可能根本就不是/etc/csh.cshrc。安装可以在根登录shell中完成,可以通过sudo、通过ssh、从cron或从其他进程启动。其中至少有一个引入了一些不同之处,从而阻止了/etc/csh.cshrc的来源。除了-f选项之外,我在手册页中没有看到会导致这种情况的任何东西。
发布于 2020-08-21 19:38:05
确保csh真的在运行!
运行which csh以获得csh的位置。
运行ls -l /path/returned/by/which/csh
在我的例子中,csh被映射到tcsh。
https://unix.stackexchange.com/questions/127380
复制相似问题