我有一个 ~/.cshrc 文件,它正在获取另一个文件,该文件应该获取另一个文件,但实际上并没有

我有一个 ~/.cshrc 文件,它正在获取另一个文件,该文件应该获取另一个文件,但实际上并没有

我最近接手了实验室的管理工作,但对此我还是比较陌生……所以希望这个问题有意义。我们的系统设置为一台服务器托管数据/用户目录,一台服务器托管软件和应用程序,三台系统用作安装了这些其他服务器的工作计算机。创建新用户时,会生成一个 ~/.cshrc 文件,该文件在软件服务器上提供父 .cshrc 文件。此父文件包含访问我们安装在已安装的软件服务器上的不同程序所需的所有路径设置和变量等。这真是一团糟……但没关系。

我们使用的程序之一需要在启动之前获取不同的文件,以便正确设置环境并加载正确的目录。出于某种原因,打开终端窗口时不再发生此源实例。以下是我发现的情况:

  • 我尝试从命令行启动该程序,它识别来自父 .cshrc 的命令,尝试加载但在计算机上的 /usr/local 目录中查找,而不是软件服务器上的目录(我相信这是软件的默认操作)。

  • 如果我在终端中运行 source ~/.cshrc,则不会发生任何变化。但是,如果我从终端获取父 .cshrc 文件,然后尝试加载程序,则不会出现任何问题。

  • 我知道 ~/.cshrc 正确地获取了父 .cshrc 文件,因为我在该文件中放置了一个测试回显,当我打开终端窗口时我可以看到这个回显。看来获取的父文件中的 source 命令没有发生。

这有意义吗?是不是有太多层级的采购?我不知道为什么会发生这种情况。以下是父 .cshrc 文件中未正确完成的代码:

set hname = `hostname`

##############
####
#### ccp4i
####
##############
switch ($hname)
    case phase15.XXX.edu:
         source /usr/local_programs/32-bit/ccp4/6.3.01/ccp4-6.3.0/bin/ccp4.setup-csh
         source /usr/local_programs/32-bit/ccp4/6.3.01/ccp4-6.3.0/setup-scripts/ccp4.setup-csh
         echo "ccp4i sourced" #(THIS SHOWS UP)
         breaksw
    default:
         echo "CCP4 env setting?"
         breaksw
endsw
##############

之所以要切换,是因为不同的电脑需要加载不同版本的软件。提前致谢。

答案1

仅出于记录目的,我找出了问题所在;回想起来,这有点明显。用户的 ~./cshrc 文件中有一个单独的源命令,在获取父文件后,它会把所有东西都弄乱。最后,我想这是一个教训,要始终仔细阅读所有内容……

相关内容