【问题标题】:Path, /usr/bin/ and /usr/local/bin/路径,/usr/bin/ 和 /usr/local/bin/
【发布时间】:2013-04-22 15:17:36
【问题描述】:

我使用gem install watchr 在 OS X (10.8.3) 上安装了 watchr。它安装在 /usr/bin/watchr

$ which watchr
/usr/bin/watchr

但是,当我尝试调用它$ watchr -v时,系统找不到它。

$ watchr -v
-bash: /usr/local/bin/watchr: No such file or directory

我认为这与我的机器上的路径设置方式有关。我的问题:

  1. 修复它的正确方法是什么?
  2. 一般来说,/usr/bin//usr/local/bin/ 应该去哪些程序?
  3. 当我这样做时,例如$ /usr/bin/watchr -e 'watch(./hello.txt) ...',我们查看的是当前目录中的 hello.txt 还是 /usr/bin/ 即与 watchr 相同的目录?

【问题讨论】:

  • 在我的情况下(Ubuntu)关闭并重新打开终端解决了这个问题。

标签: linux macos bash command-line watchr


【解决方案1】:

你的命令的路径被缓存了一个错误的值。尝试更新 bash 为路径存储的缓存目录。

hash -d watchr

我在这里找到了答案which ctags shows /usr/local/bin/ctags but when I run ctags it runs /usr/bin/ctags. How is this possible?

【讨论】:

  • 谢谢,伙计。我在设置 Erlang 和 Elixir 时遇到了这个问题。他们的官方存储库在 Ubuntu / Linux Mint 中搞砸了。您的评论使我免于可能长期寻找错误,并且将来也可能这样做。 ;) 我不敢相信我以前不知道那个。 (我应该为未来的谷歌员工添加更多关键字吗?)
【解决方案2】:

/usr/local/bin/watchr 是损坏的符号链接吗?这将使which watchr 不包含它,但watchr 会打印此错误:

-bash: /usr/local/bin/watchr: No such file or directory

我不知道为什么 OS X 附带的gem 将程序安装在 /usr/bin/ 中,但通常 /usr/bin/ 用于预安装的程序,包管理器使用 /opt/local 之类的东西/bin/ 或 /usr/local/bin/。

我在路径上的其他文件夹之前还有 /usr/local/bin/,并且我将大多数手动安装或编译的程序放在 /usr/local/bin/ 中。我曾经有一个单独的 ~/bin/ 文件夹,但很容易找到像 find /usr/local/bin ! -lname '../Cellar/*' 这样的非 Homebrew 程序。

有关 /usr/local/bin/ 的一般问题:

【讨论】:

  • 我在 /usr/local/bin/ 中看到了几个符号链接,但没有找到 watchr 的符号链接。您是说 /usr/bin/ 更适合系统安装吗?而 /usr/local/bin/ 用于手动安装,即由用户手动安装的程序?
  • 在对此进行了更多实验之后,这就是我所学到的。如上所述 {{/usr/local/bin/}} 经常被包管理器使用,例如brew 安装 {{/usr/local/Cellar/*}}。对于手动安装,这完全取决于用户在哪里放置这些位。
【解决方案3】:

在您的主目录中创建一个名为 .profile 的文件并添加以下行。 export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:$PATH"

【讨论】:

    猜你喜欢
    • 2019-04-29
    • 2011-06-03
    • 1970-01-01
    • 2014-08-05
    • 2021-03-25
    • 1970-01-01
    • 2014-12-17
    • 2011-07-18
    • 2023-03-05
    相关资源
    最近更新 更多