PATH搜索是否包含符号链接?
POSIX Shell标准在此站点上说 http://pubs.opengroup.org/onlinepubs/9699919799/ 有关shell如何PATH用于查找可执行文件的信息: “应从头到尾搜索列表,将文件名应用于每个前缀,直到找到具有指定名称和适当执行权限的可执行文件为止。” 嗯,这在实际的POSIX实现中似乎不是这样工作的: man which 说: “返回参数(在严格符合POSIX的外壳程序中以命令形式给出)的情况下,将在当前环境中执行的文件(或链接)的路径名。它通过在PATH中搜索与文件名匹配的可执行文件来实现。参数。它不遵循符号链接。” 好,让我们看看这种情况: $ pwd /home/mark $ echo $PATH /home/mark/bin:... $ ls -l bin/foobar lrwxrwxrwx 1 mark mark 18 Dec 12 22:51 bin/foobar -> /home/mark/foobar1 $ touch foobar1 $ which foobar $ chmod a+x foobar1 $ which foobar /home/mark/bin/foobar 好的,这是一个PATH带有正确名称的符号链接,并且据报告ls是可执行的。 which 根本不看它,只对它指向的内容感兴趣。 …