.bash_profile 未被读取

cst*_*fel 6 bash centos bashrc centos6

因此,我正在使用 CentOS 6.3 全新安装,并尝试将内容添加到 OpenMPI 的路径中,因此我编辑了 .bash_profile 文件以读取:

FOO='test'
export FOO

# Add support for MPI
PATH=$PATH:/usr/lib64/openmpi/bin

# User specific environment and startup programs

PATH=$PATH:$HOME/bin




export PATH
Run Code Online (Sandbox Code Playgroud)

当我启动 bash shell 时,这显然没有被读取,我的 $PATH 没有 /usr/lib64/openmpi/bin 路径,并且当我尝试时 FOO 不存在 echo $FOO

.bashrc 读得很好,如果我source ~/.bash_profile创建 FOO 以及我的 $PATH 被正确编辑,但它不会自行运行 .bash_profile 所以如果我能得到任何帮助,那就太好了。

小智 13

你能描述一下你如何测试这两个文件吗?您是否尝试过登录或非登录shell?这是区别:

当您登录系统并看到命令行提示符时,它是一个登录 shell,它按顺序执行这些文件:

/etc/profile
~/.bash_profile
~/.bashrc
/etc/bashrc
Run Code Online (Sandbox Code Playgroud)

非登录 shell 只会按顺序执行这两个文件:

/etc/bashrc
~/.bashrc
Run Code Online (Sandbox Code Playgroud)

如果你只是简单地通过“bash”启动一个 bash shell,它是一个非登录 shell,并且 ~/.bash_profile 不会被调用。如果您希望即使在运行非登录 shell 时也能设置变量,则应将它们放入~/.bashrc.


Ant*_*hen 4

这是正常的,.bash_profile 源自登录 shell,.bashrc 源自交互式非登录 shell。在 CentOS 中,.bash_profile 的顶部通常有:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
Run Code Online (Sandbox Code Playgroud)

所以你可以把东西放在.bashrc中。

当您打开新窗口时,Mac OS X 终端会读取 .bash_profile。可以使用Run command 作为登录 shell 来使 gnome-terminal 做到这一点。