首页 > 解决方案 > wsl 安装包优先于 windows

问题描述

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

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

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

标签: windowswindows-subsystem-for-linux

解决方案


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

以Node为例,最好使用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

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

希望能帮助到你


推荐阅读