我正在 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 中的上面两行(即上面export
和source
命令),然后 bash 知道g16
是什么:g16 <input file>
运行软件,并且另外which g16
给出/g16root/g16/g16
.所以这有效,但我必须重新输入export
和source
命令每一个我登录(远程)机器的时间。
请耐心等待,因为我是 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