0

我刚刚安装了运行良好的 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]

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

谢谢,

4

3 回答 3

1

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

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

从 bash 手册页:

当 bash 作为交互式登录 shell 或作为带有 --login 选项的非交互式 shell 调用时,它首先从文件 /etc/profile 中读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,然后从第一个存在且可读的文件中读取并执行命令。当 shell 启动时,可以使用 --noprofile 选项来禁止这种行为。

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

于 2010-02-22T06:03:21.343 回答
1

如果您有 ~/.profile 尝试添加以下行。

如果 [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; 然后来源 /Users/tammam56/.rvm/scripts/rvm ;菲

于 2010-02-22T06:26:48.413 回答
0

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

于 2010-11-12T04:58:31.187 回答