结论:一般看似严重的问题,到头来往往仅仅是很小的问题。
声明:在zsh中,环境变量path与PATH是等价的,不区分大小写。
1. 问题
1.1 从bash切到zsh后,source fuzzy finder即fzf相关的环境变量脚本时,一直报bind command not found,云云。
- shell加载fzf的shell增强脚本,bash shell为sourc ~/.fzf.bash, zsh shell为source ~/.fzf.zsh。从bash切到zsh后,此文件需要用~/.fzf/install命令重新生成,与原有的~/.fzf.bash不同。
1.2 从bash切到zsh后,应用一个自定义的bashrc增加版配置文件后,再引用其中的命令,会各种command not found找不到。
- 花费了两天的时间,才排查出来,是因为zsh shell里面的path与PATH一致,不区分大小写。原有bash shell配置脚本里面,用了一个小写的path变量,这个变量,在bash下没问题,因为bash区分大小写;zsh下,此变量有结果后,会覆盖系统的PATH变量。于是,就是各种shell命令找到。
究其根源,是因为zsh的path变量不区分大小写。另外,也提醒我们,在编程变量命名时,要避免系统命令或关键字中的同名字符干扰。
- zsh出现的的command not found,除了需要export相关的PATH变量之外,也要随时注意到PATH变量输出的结果是否正确。