"which ruby"指向不存在的目录,如何让它指向与"whereis ruby"相同的目录?



我在运行 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目录,我必须清理它以使一切正确指向。

相关内容

  • 没有找到相关文章