我在运行 10.21.1 的 MacBook 上的终端中使用了 bash shell
。当我键入命令which ruby
时,我得到的结果/opt/local/bin/ruby
,它不再存在。我的 Ruby 环境几年前就搞砸了,现在我想从头开始,所以我删除了额外的版本。
但是,当我键入whereis ruby
时,我得到的结果是/usr/bin/ruby
,这是 OSX 上 Ruby 的默认目录。
/opt/local/bin/ruby
不在/etc/paths
,但/usr/bin/ruby
是。
如何让他们指向同一个地方?安装版本管理器并让它为我工作更好吗?
经过更多的探索,并试图确定它是否真的是哈希的东西,我认为它不是。
查看~/.bashrc,它有以下行:
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
而 ~/.bashprofile 有:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
这可能就是为什么echo $PATH
包含/opt/local/bin
并且删除安全吗?
如果"哪个红宝石"返回一个过时的位置,那可能是因为你把它别名化为type
,并且因为信息只存在于你的shell的哈希中。 你可以用
hash -r
whereis
程序不使用散列信息,而是主要依赖于$PATH
(并且消除过时的信息,bash 将给出一致的结果)。
这可能对其他人没有帮助,但事实证明我仍然安装了MacPorts,它也使用该opt/local目录,我必须清理它以使一切正确指向。