给出$ PATH:
/Users/myname/bin:
/usr/local/Cellar:
/usr/local/Cellar/ruby/1.9.3-p362/bin:
... and so forth
我真的需要红宝石的位置,还是/ usr / local / Cellar足以找到红宝石?
答案 0 :(得分:4)
条目彼此独立,仅计算直接内容。试试吧。
> mkdir ~/bin
> mkdir ~/bin/test
> cp /bin/echo ~/bin/test/echotest
> export PATH=$PATH:~/bin
> echotest Hello, world
-bash: echotest: command not found
> rm -rf ~/bin/test
答案 1 :(得分:0)
基本上,当您键入普通命令名称并且它不是函数或别名时,shell会在逻辑上获取名称并依次尝试PATH中的每个目录。在伪代码中:
name=command_to_execute
for path in ${names in PATH}
exec $path/$name "${arguments[@]}"
report "failed to find command $name"
如果exec
成功,就没有其他事可做了。如果exec
失败,它会尝试下一个目录。
请注意,路径搜索从不适用于包含斜杠的名称。 shell只搜索PATH中列出的目录(但空条目被解释为对.
(当前目录)的引用。它不会在自己的意志中查看子目录;你必须在PATH中列出子目录。