WSL 安装的软件包优先于 Windows



我的Windows 10上已经安装了一些软件/工具,包括Node.js,Git等。我正在 WSL 中设置我的开发环境。

即使我在 Windows 中安装了相同的包,我是否应该在 WSL 下再次安装它们?我需要在Windows下安装这些工具才能使用其他工具,如Eclipse IDE。使用互操作的优点和缺点是什么?如果我在两者上都有相同的软件,哪个安装优先于哪个安装?目前,我在两者上都安装了 Node,并且我有 WSL 提供的nodenode.exe

我想避免可能出现的问题,例如,在每个系统上使用略有不同的软件版本(例如 Git(,并保持单独的配置。出于这个原因,我认为Windows和WSL之间的无缝集成可能更好,但另一方面,我希望WSL是"自包含的",方法是在其下安装所有依赖项,如果这有任何价值的话。

使用什么取决于具体情况。例如 git,如果您的代码在 C: 驱动器中,最好使用 Windows 版本,因为 Windows 版本负责换行。您可以创建别名:alias git=git.exe

节点,例如,最好使用Linux版本并隐藏Windows版本。在 WSL 中,Windows 程序优先。例如,如果您在Windows和WSL中有Node.js,则Windows优先。最安全的方法是在启动 WSL 时从路径中删除 Windows 一个。

例如,要在 WSL 中隐藏 Windows 版本的 npm,请将其放在 ~/.bashrc 中:

WIN_NPM_PATH="$(dirname "$(which npm)")"
WIN_C_PATH="$(wslpath 'C:')"
if [[ "${WIN_NPM_PATH}" == "${WIN_C_PATH}"* ]]; then
  PATH=$(echo "${PATH}" | sed -e "s#${WIN_NPM_PATH}##")
fi

这段代码取自鹏赢项目:https://github.com/WhitewaterFoundry/pengwin-setup/blob/91e471be48736fe3f7aa92154e868b191e951b4e/pengwin-setup.d/nodejs.sh#L35

希望对你有帮助

最新更新