我的 .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 参数一起使用