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(使用前将#替换为@)