在 bashrc 文件中使用导出和源命令

在 bashrc 文件中使用导出和源命令

我正在 Ubuntu 中运行 bash,并且正在尝试运行一个名为 Gaussian 16 的计算化学程序。我的同事告诉我,他可以通过在文件中添加以下几行来运行 Gaussian 16 .bashrc

export g16root=/g16root
source $g16root/g16/bsd/g16.profile

我的同事说,一旦他将这些行添加到.bashrc文件中,他就可以使用命令运行 Gaussian 16 g16 <input file>,其中<input file>是所需的输入文件。

我的.bashrc文件位于我的主目录(~换句话说/export/home/myusername/)中。当我将上面两行添加到我的.bashrc文件中然后尝试时g16 <input file>,bash 告诉我它不知道什么g16是 (" g16: command not found")。

然而, 如果我执行(分别)bash 中的上面两行(即上面exportsource命令),然后 bash 知道g16是什么:g16 <input file>运行软件,并且另外which g16给出/g16root/g16/g16.所以这有效,但我必须重新输入exportsource命令每一个我登录(远程)机器的时间。

请耐心等待,因为我是 bash 新手,但是如何让 bash在我的文件中“执行”export和命令?source.bashrc

如果有帮助的话,我的整个.bashrc文件(注释行除外)现在如下:

test -s ~/.alias && . ~/.alias || true

if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

export g16root=/g16root
source $g16root/g16/bsd/g16.profile

(我不知道为什么前两块代码在那里。)

另外,执行echo $BASH_VERSION给出4.1.5(1)-release,所以显然我实际上正在使用 bash。

答案1

正如 ilkkachu 所说,.bashrc没有被处理登录外壳——只是.profile。 (此行为可能特定于 Ubuntu;我不确定。)

我能够.bashrc通过添加以下行来诱导登录 shell 的处理.profile

# if running bash
if [ -n "$BASH_VERSION" ]; then
     # include .bashrc if it exists
     if [ -f "$HOME/.bashrc" ]; then
         . "$HOME/.bashrc"
     fi
fi

相关内容