WSL中Mercurial的$PATH与Shell路径不一致的原因及解决方法咨询
问题原因与解决方法
为什么hg的PATH和Shell不一样?
你通过snap安装的Mercurial受限于snap的沙箱机制,默认只会继承基础系统PATH,不会包含WSL挂载的Windows路径(比如你的/mnt/c/Users/mason/...这类路径),也不会加载用户Shell里自定义的PATH扩展,所以hg能识别的PATH比交互式Shell少很多。
解决方法
方法1:直接指定编辑器的绝对路径
不用依赖PATH,直接在hg配置里写入code的完整路径。执行hg config -e打开配置文件,在[ui]段落添加:
editor = /mnt/c/Users/mason/AppData/Local/Programs/Microsoft VS Code/bin/code
保存退出后,hg就能直接调用code编辑器。
方法2:用classic模式重新安装Mercurial
snap的--classic模式会关闭部分沙箱限制,让应用继承完整的系统和用户环境变量。先卸载现有版本,再重新安装:
sudo snap remove mercurial sudo snap install mercurial --classic
重新安装后,hg就能继承Shell的完整PATH,直接设置editor = code即可正常使用。
方法3:手动给Mercurial的snap实例添加PATH
如果不想重新安装,可手动修改snap实例的环境配置:
- 编辑snap的profile文件:
sudo nano /var/snap/mercurial/current/.profile - 在文件末尾添加PATH扩展:
export PATH="$PATH:/mnt/c/Users/mason/AppData/Local/Programs/Microsoft VS Code/bin" - 保存退出后,重启Shell或重新打开终端,hg就能识别到code的路径。
内容的提问来源于stack exchange,提问作者masonk
相关产品推荐
相关产品推荐

