修复WSL中env:'bash\r'的冲突问题

本文最后更新于:2022年4月18日 上午

前言

由于之前C/C++环境配置出问题,近期把WSL重装了一次,结果在配置zsh-proxy的时候出现了报错

1
/usr/bin/env: ‘bash\r’: No such file or directory

直接搜索的方案要么是直接屏蔽掉Windows的Path继承,要么是说重启下wsl就好,但都比较模棱两可

问题原因

后面在查看了proxy相关的报错后,发现只有配置gitproxy时会出现这个问题,同时根据Stack Overflow上别人类似情况的提问,发现npm同样也无法使用。检查后发现是在Windows对应的Path内,gitnpm本身没有.exe的后缀就能启动,而wsl内是可以执行Windows下的部分可执行文件的,因此wsl调用了基于Windows的环境变量,从而导致了换行符与wsllinux格式不兼容。

解决方案

本来想的是怎么处理屏蔽Windows的相关Path,后面发现只需要在WSL上重新安装好gitnpm后重启wsl

1
2
3
wsl --shudown
# 或者仅关闭指定发行版,例如`Arch`
wsl -t Arch

就可以解决问题了。之前在Stack Overflow上其他人能直接通过重启wsl解决问题,应该也是无意中自己已经覆盖安装过了对应的工具,然后重启才取得了效果,在这里做个记录以做备忘。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!