OS X 10.11 $ PATH不工作?

时间:2016-02-19 05:14:52

标签: bash path terminal osx-elcapitan

我无法让$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!'

1 个答案:

答案 0 :(得分:1)

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

尝试将rtest放入~/bin并将其设为可执行文件:

chmod +x ~/bin/rtest

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

$ rtest

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