在WSL中如何让root用户继承Windows的$PATH?
解决WSL中root用户继承Windows $PATH的问题
原因
sudo默认会重置环境变量,导致root用户的$PATH不包含普通用户继承的Windows系统路径,因此无法找到code这类Windows端安装的命令。
解决方案
方法1:让sudo保留用户环境变量(推荐)
使用visudo编辑sudoers配置文件(直接编辑/etc/sudoers可能引发权限风险):
sudo visudo
找到包含Defaults env_reset的行,修改为:
Defaults !env_reset
或者更精准地仅保留PATH变量:
Defaults env_keep += "PATH"
保存退出后,再次使用sudo时会自动继承普通用户的$PATH,执行sudo code test.txt即可正常运行。
方法2:单次sudo时传递环境变量
如果不想修改全局配置,每次执行命令时添加-E参数,让sudo保留当前用户的环境变量:
sudo -E code test.txt
方法3:手动给root添加Windows路径
编辑root用户的bash配置文件(如/root/.bashrc),将Windows相关路径追加到PATH:
sudo nano /root/.bashrc
在文件末尾添加普通用户PATH中的Windows路径片段(示例):
export PATH="$PATH:/mnt/c/Windows/system32:/mnt/c/Program Files/Microsoft VS Code/bin:/mnt/c/Users/hans/AppData/Local/Microsoft/WindowsApps"
保存退出后,执行source /root/.bashrc使配置生效,之后root用户的PATH就包含这些Windows路径了。
内容的提问来源于stack exchange,提问作者hanshenrik
相关产品推荐
相关产品推荐

