我刚刚安装了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]
我有什么想法可以解决这个问题吗?
谢谢,
担
答案 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。