$ PATH是否需要子目录

时间:2013-07-16 17:47:38

标签: macos bash path

给出$ PATH:

/Users/myname/bin:
/usr/local/Cellar:
/usr/local/Cellar/ruby/1.9.3-p362/bin:
... and so forth

我真的需要红宝石的位置,还是/ usr / local / Cellar足以找到红宝石?

2 个答案:

答案 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中列出子目录。