【问题标题】:OS X 10.11 $PATH not working?OS X 10.11 $PATH 不工作?
【发布时间】:2016-05-31 13:59:12
【问题描述】:

我无法让$PATH 工作。我做错了什么不明白?

192:~ me$ echo $PATH
/User/me/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
192:~ me$ ruby rtest
ruby: No such file or directory -- rtest (LoadError)
192:~ me$ cd ~/bin
192:bin me$ ruby rtest
Hello World!

如果rtest 在我的/User/me/bin 内,为什么它无法从任何地方找到?

rtest 只有两行:

#!/usr/bin/env ruby
puts 'Hello World!'

【问题讨论】:

  • 不应该是/Users/me/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin吗?
  • 这不是ruby的投诉,没有找到rtest的文件吗? ruby 是否检查您的 $PATH 以获取输入文件?在您的主目录中,没有rtest,但在~/bin 中显然有。
  • @david-cullen,是的,你是对的。修复它,注销并重新登录,仍然无法正常工作。
  • @e0k,是的,我只是在使用 rtest 文件来查看是否可以从任何地方访问它。将使用 ruby​​ 文件内容编辑原始问题。

标签: bash path terminal osx-elcapitan


【解决方案1】:

$PATH 是一个目录列表,供 shell 搜索可执行文件和脚本。在您的情况下,可执行文件是ruby,而rtest 是给ruby 的参数。 shell 只搜索ruby 并运行它,将rtest 作为字符串提供给Ruby。无论程序如何处理其参数,都取决于程序。在您的情况下,它是 Ruby 要查找的文件的名称。在没有给出目录名的情况下,它会在当前目录中查找名为rtest 的文件。如果它在那里,它会运行它,如果没有它就会抱怨。在你的主目录中,没有这样的文件,所以ruby 抱怨。当你切换到文件所在的目录时,它可以在当前目录中找到它,所以它运行它。

尝试将rtest 放入~/bin 并使其可执行:

chmod +x ~/bin/rtest

脚本的第一行 (#!/usr/bin/env ruby) 告诉 shell 如何运行它。您应该可以在任何地方运行它:

$ rtest

(而不是ruby rtest。)除非您有执行权限,否则它不会执行脚本。

【讨论】:

  • 谢谢:rtest 使用 chmod 到 777 可以在它自己的目录之外工作。
猜你喜欢
  • 2016-05-15
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多