【问题标题】:zsh path "no such file or directory" where do I unset it?zsh path“没有这样的文件或目录”我在哪里取消设置它?
【发布时间】:2014-02-06 16:33:24
【问题描述】:

我刚刚注意到我的$PATH 的位置无效:

\> $PATH
zsh: no such file or directory: /usr/bin:/bin:/usr/sbin:/sbin: ...

我使用 prezto,根据文档,配置文件按以下顺序获取:

  1. /etc/zshenv
  2. ~/.zshenv
  3. /etc/zprofile
  4. ~/.zprofile
  5. /etc/zshrc
  6. ~/.zshrc
  7. ~/.zpreztorc
  8. /etc/zlogin
  9. ~/.zlogin
  10. ~/.zlogout
  11. /etc/zlogout

我检查了整个列表,但在/usr/bin 之前找不到任何内容

有什么建议可以帮助我找出引发问题的原因吗?

谢谢!

【问题讨论】:

    标签: zsh zshrc


    【解决方案1】:

    据我所知,您的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
    

    【讨论】:

    • 感谢您的澄清
    • 虽然我几乎没有希望得到答案,但这里是:为什么要投反对票?我有理由(阅读:非常)确定我正确诊断并回答了这个问题。如果答案存在事实错误或其他问题,我想知道它是什么,以便我学习和/或改进答案。
    猜你喜欢
    • 2020-10-28
    • 2019-12-11
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2019-07-05
    相关资源
    最近更新 更多