我刚注意到我的$PATH
位置无效:
\> $PATH
zsh: no such file or directory: /usr/bin:/bin:/usr/sbin:/sbin: ...
我使用prezto,根据文档,配置文件按此顺序获取:
我查看了整个列表,但在/usr/bin
关于如何找到导致问题的原因的任何建议?
谢谢!
答案 0 :(得分:17)
据我所知,PATH
没有任何问题。如果您想查看PATH
使用echo
的内容:
% echo $PATH
/usr/sbin:/usr/bin:/sbin:/bin
PATH
是一个以冒号分隔的目录列表,用于搜索命令。从本质上讲,zsh将使用每个路径尝试命令的名称并执行第一个查找(/usr/sbin/foo
,/usr/bin/foo
等)。如果列出的任何目录不存在,则不会出现错误消息,zsh根本就找不到二进制文件并尝试下一个。
您的案例中的问题是通过尝试执行$PATH
来触发的。在执行命令行之前,zsh - 除其他外 - 用其内容替换所有变量,这称为参数扩展(所以man 1 zshexpn
以获取更多信息)。
因此,当您只编写$PATH
时,zsh将其替换为/usr/bin:/bin:/usr/sbin:/sbin:...
并将其解释为一条长路径。也就是说,:
不作为分隔符,而是作为目录名称的一部分。您收到的任何其他不存在的目录都会收到相同的错误消息:
% ls /some/path
dir1 dir2
% /some/path/nothere/notthere
zsh: no such file or directory: /some/path/nothere/notthere