Ubuntu将shell从bash切换为zsh后subl、VScode等应用命令无法识别问题
问题原因
切换shell为zsh后,zsh默认不会继承bash的PATH变量配置,你当前.zshrc中的PATH未包含Sublime Text、VSCode等应用的命令所在目录,同时你最后一行的PATH配置是错误的:/usr/local/man是系统手册存储目录,不属于可执行文件目录,不需要加入PATH。
解决步骤
第一步:先获取应用命令的实际存储路径
临时调用bash执行查询命令,拿到你当前环境下两个命令的绝对路径:bash -c "which subl" bash -c "which code"通常Ubuntu通过snap安装的应用命令都会存放在
/snap/bin目录下,返回结果大概率为/snap/bin/subl、/snap/bin/code。第二步:修正.zshrc配置
两种方案二选一即可:- 方案1:直接继承bash的PATH配置(最省事)
在你的.zshrc末尾添加一行,读取bash的全局配置文件:
source ~/.profile- 方案2:手动补全PATH目录
把第一步查到的命令所在目录(比如/snap/bin)加入到.zshrc开头的PATH配置行,同时删除最后一行错误的/usr/local/man配置:
# 修改前的配置 # export PATH=$HOME/bin:/usr/local/bin:$PATH # 修改后的配置,替换为你实际查到的目录 export PATH=$HOME/bin:/usr/local/bin:/snap/bin:$PATH也可以直接添加别名实现:
# 替换为你第一步查到的实际绝对路径 alias subl="/snap/bin/subl" alias code="/snap/bin/code"- 方案1:直接继承bash的PATH配置(最省事)
第三步:生效配置
保存.zshrc后执行命令让配置立即生效:source ~/.zshrc之后再执行
subl、code类命令就能正常识别了。
内容的提问来源于stack exchange,提问作者Kianoush Arshi
相关产品推荐
相关产品推荐

