.bashrc 在“/bin/bash --login”之后执行命令

.bashrc 在“/bin/bash --login”之后执行命令

我的 .bashrc 中有这个别名:

alias s='cd ~/Documents/projects/s && /bin/bash --login && rvm use ruby-1.9'

进入登录 shell (/bin/bash --login) 后如何执行正确的部分?

答案1

当你跑步时bash --login,这会启动一个登录外壳。 bash 关于初始化文件的怪癖之一是,如果它是登录 shell,它只会读取~/.bash_profile(或者如果它不存在~/.bash_login,或者如果它也不存在~/.profile),~/.bashrc即使 shell 是交互式的。

~/.bash_profile要在登录 shell 中执行代码,如果它特定于 bash,则将其放入,或者~/.profile如果您希望它在任何登录上发生,即使在/bin/sh被调用时也是如此。

为了确保应用交互式 shell 的自定义,请将以下代码放入您的~/.bash_profile

case $- in
  *i*) if [ -e ~/.bashrc ]; then . ~/.bashrc; fi;;
esac
if [ -e ~/.profile ]; then . ~/.profile; fi

答案2

作为对 @Gilles 答案的改进,让 ruby​​ 仅在您要求时运行,我将编辑 .bashrc 文件的副本并告诉 bash 将其与 --rcfile 参数一起使用

相关内容