【问题标题】:"which ruby" points to a non-existent directory, how do i get it to point to the same directory as "whereis ruby"?“which ruby​​”指向一个不存在的目录,我如何让它指向与“whereis ruby​​”相同的目录?
【发布时间】:2018-12-17 15:19:00
【问题描述】:

我在运行 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 并且可以安全删除的原因吗?

【问题讨论】:

    标签: ruby bash macos terminal path


    【解决方案1】:

    如果“which ruby​​”返回一个过时的位置,那可能是因为您将其别名为 type,并且因为信息存在仅在您的 shell 中散列。你可以用

    清除它
    hash -r
    

    whereis 程序不使用散列信息,而是主要依赖于 $PATH(并且消除了过时的信息,bash 会给出一致的结果)。

    【讨论】:

    • 嗯,我无法让它实际工作,我不知道如何获得有用的谷歌搜索。当我刚刚输入hash 时,我得到了/usr/bin/which/usr/bin/whereis 作为我的命中,如果这更能提供信息?
    【解决方案2】:

    这可能对其他人没有帮助,但事实证明我仍然安装了 MacPorts,它也在使用那个 opt/local 目录,我必须清理它以使一切正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 2015-04-16
      • 2015-04-21
      • 1970-01-01
      • 2015-07-07
      • 1970-01-01
      • 2019-04-29
      相关资源
      最近更新 更多