我的Mac OSX Snow Leopard上的.bash_profile和.bashrc中没有执行该行

时间:2010-02-22 06:00:40

标签: unix osx-snow-leopard rvm

我刚刚安装了Ruby版本管理器(RVM),它工作正常,但它要求我将以下行放在我的/.bash_profile和〜/ .bashrc文件中:

if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi

查看内容我看到以下内容:

tammam56$ cat /.bash_profile
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi

tammam56$ cat ~/.bashrc 
export PATH=/usr/local/bin:$PATH
export MANPATH=/usr/local/man:$MANPATH
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi

然而,当我启动新的终端窗口时,它不会执行我知道的命令,因为我将默认的Ruby版本设置为1.9,如果我手动执行该行,我会得到正确的版本:

tammam56$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
Macintosh-37:~ tammam56$ if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
Macintosh-37:~ tammam56$ ruby -v
ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]

我有什么想法可以解决这个问题吗?

谢谢,

3 个答案:

答案 0 :(得分:1)

您确认.bashrc和/或.bash_profile中的其他命令是否已正确更新?

接下来,您应该确认终端是否正在将shell作为登录shell启动(请参阅“首选项” - >“启动”)。

来自bash手册页:

  

当bash被调用为交互式登录shell时,或者作为非交互式登录shell          使用--login选项的活动shell,它首先读取并执行com-          来自文件/ etc / profile的mand,如果该文件存在。看完之后          该文件,它查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,          按此顺序,从第一个读取和执行命令          存在且可读。当 - 时可以使用--noprofile选项          shell开始抑制这种行为。

     

当启动不是登录shell的交互式shell时,bash          如果该文件存在,则从〜/ .bashrc读取并执行命令。这个          可以使用--norc选项禁止。 --rcfile文件选项          将强制bash从文件中读取和执行命令而不是          〜/ .bashrc中。

答案 1 :(得分:1)

如果您有〜/ .profile,请尝试添加以下行。

if [[-s /Users/tammam56/.rvm/scripts/rvm]];然后来源/Users/tammam56/.rvm/scripts/rvm;网络

答案 2 :(得分:0)

我发现解决这个问题的最简单方法是将〜/ .bashrc文件中的所有内容(因此我的〜/ .bashrc现在为空)移动到新的〜/ .bash_profile文件中。现在所有Terminal.app选项卡都会自动运行〜/ .bash_profile中包含的所有行。这也适用于iTerm。