zsh 无法在 ~/bin 中找到或执行自定义用户脚本,尽管它们是可执行的并且位于 $PATH 环境变量中

2024-04-22

Problem:

我最近从 macOS Mojave 10.14.6 升级到 macOS Catalina 10.5.5。

现在zsh是默认的 shell,我迁移了我的.bashrc to .zshrc:

  • 别名工作正常。
  • But for some unexplainable reason, my custom user scripts in ~/bin/my/ and ~/bin/dev/ are
    • 未通过自动完成完成
    • 完全输入时无法唤起,然后我得到zsh: command not found: myScript.sh

调查与故障排除:

  • 当将 shell 改回 bash 时,一切仍然有效,因此可以排除操作系统更新导致的数据丢失/损坏,这一定是配置问题。
  • 我的所有脚本文件都有可执行标志。
  • The directories they reside in are in the $PATH environment variable.
    • Proof: echo $PATH gives /opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/usr/local/sbin:~/bin/bin:~/bin/my:~/bin/dev:

实验:

  • 我尝试设置/附加 $PATH 变量,带或不带export关键词。 --> 没有区别。
  • 我尝试了各种可能的配置文件: .zprofile .zshrc --> 没有区别。
  • I hardlinked the bash and the zsh config file and included: alias test123="echo test123"
    • 此别名适用于 bash 和 zsh。所以这不可能是加载配置文件链中的问题。
  • 我尝试了不同的 shebang 语法 --> 没有区别。无论如何,使用完整路径直接调用始终有效。

我找到了解决方案威廉·珀塞尔的回答 https://stackoverflow.com/a/29829360/199400关于zsh PATH 的奇怪行为 https://stackoverflow.com/questions/29820315/:

尝试使用 $HOME 而不是 ~。在许多情况下,当您期望 shell 扩展时,它们不会扩展,通常最好使用 $HOME。 ~ 实际上只是为了成为交互式使用的捷径。

从那时起,zsh 按预期工作,并考虑了我所有的自定义用户脚本~/bin/*当我更换了所有的~波形符占位符$HOME我的变量$PATH。 — 一个错误的性格可以带来多大的影响!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zsh 无法在 ~/bin 中找到或执行自定义用户脚本,尽管它们是可执行的并且位于 $PATH 环境变量中 的相关文章

随机推荐