WSL Ubuntu 20.04中bashrc调用route.exe提示命令未找到的问题
问题原因分析
- PATH环境变量被手动覆盖,丢失Windows系统路径:WSL默认会自动把Windows系统的
C:\Windows\System32等目录添加到Ubuntu的PATH环境变量中,这样才能直接调用route.exe这类Windows原生命令。但你在bashrc里手动定义了完整的PATH变量,这个自定义的PATH里没有包含任何Windows相关的路径,导致系统无法定位到route.exe命令。 - 两次报错对应两次调用:bashrc里有两行分别通过
route.exe获取IP来设置DOCKER_HOST_IP和DISPLAY,所以每次执行source ~/.bashrc时,这两行都会触发一次“command not found”错误,总共两次。
修复方案
方案1:保留原有PATH的同时添加自定义路径
不要直接覆盖PATH,而是在原有PATH基础上追加自定义路径,修改bashrc里的PATH设置为:
export PATH="/home/srkpmlz/.local/bin:/home/srkpmlz/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local:$PATH"
这样既保留了WSL默认添加的Windows路径,又加入了你需要的自定义路径。
方案2:直接使用WSL原生命令替代route.exe
可以用WSL自带的ip命令获取主机IP,替代route.exe,比如:
export DOCKER_HOST_IP=$(ip route show default | awk '/default/ {print $3}') export DISPLAY=$(ip route show default | awk '/default/ {print $3}'):0.0
这种方式不需要依赖Windows的route.exe,更适配WSL环境。
内容的提问来源于stack exchange,提问作者Rony Shaji
相关产品推荐
相关产品推荐

