在 shell 脚本中,我尝试打开一个新的 tcsh shell 并加载一些预定义的别名和环境变量,我不想在默认 cshrc 中使用这些变量。我也不能将它放在我的主目录中,因为这个脚本将被多个用户使用。当创建新的 xterm 或 shell 时,tcsh 将在哪些路径中查找 cshrc 文件?是否可以通过某些环境变量进行配置?
答案1
从手册页:
登录 shell 首先执行系统文件 /etc/csh.cshrc 和 /etc/csh.login 中的命令。然后执行用户主目录中文件中的命令:首先执行 ~/.tcshrc (+),如果未找到 ~/.tcshrc,则执行 ~/.cshrc,然后执行 ~/.history(或 histfile shell 变量的值),然后执行 ~/.login,最后执行 ~/.cshdirs(或 dirsfile shell 变量的值)(+)。shell 可能会在 /etc/csh.cshrc 之前而不是之后读取 /etc/csh.login,并且如果编译时已这样,则可能会在 ~/.tcshrc 或 ~/.cshrc 和 ~/.history 之前而不是之后读取 ~/.login;请参阅版本 shell 变量。(+)
没有环境变量参数可以改变这一点,除非是为了-f
防止加载启动文件。
但是,您可以使用source
命令从内部加载文件tcsh
:
source /etc/my-special-settings.tcsh
您还可以在用户中做类似的事~/.tcshrc
:
if ( $?SPECIAL_SETTINGS ) then
source /etc/my-special-settings.tcsh
else
source ~/.tcsh/tcshrc
endif