Sin*_*tos 11 linux path maven windows-10 windows-subsystem-for-linux
我在Win10中使用Windows子系统Linux(Ubuntu 18.04),我在其中安装了一个Maven.此外,我之前在Win10中安装了一个maven.现在,当我mvn compile在WSL中使用时,它告诉我maven编译失败.我使用which mvn并发现它引用了Win10中安装的Maven.
此外,我运行env并发现Win10的路径被添加到WSL的路径中.当我使用WSL时,我不想在Win10的Path中使用任何东西,我该怎么办?
ins*_*ign 26
sudo nano /etc/wsl.conf
Run Code Online (Sandbox Code Playgroud)
然后加
[interop]
appendWindowsPath = false
Run Code Online (Sandbox Code Playgroud)
然后
Ctrl+S然后Ctrl+X然后exit。
将以下代码添加到 .bashrc
PATH=$(/usr/bin/printenv PATH | /usr/bin/perl -ne 'print join(":", grep { !/\/mnt\/[a-z]/ } split(/:/));')
Run Code Online (Sandbox Code Playgroud)
替代方案(运行一次!):
echo "export PATH=`echo $PATH | tr ':' '\n' | grep -v /mnt/ | tr '\n' ':'`" >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
备选方案 2
只需添加export PATH="$PATH:/usr/bin"到 的末尾~/.bashrc,以便usr/bin优先于 Windows 的应用程序。可能不是一个好的选择。
编辑 Windows 注册表。目前不推荐使用。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{GUID}\Flags
Run Code Online (Sandbox Code Playgroud)
改变Flags来自7于5以排除WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH枚举。
简单的重新输入 WSL 并测试:
echo $PATH
Run Code Online (Sandbox Code Playgroud)
以管理员身份在 PowerShell 中运行:
Restart-Service LxssManager
Run Code Online (Sandbox Code Playgroud)
使用 Admin 以管理员身份从 PowerShell 终止 WSL
wslconfig /t Ubuntu
Run Code Online (Sandbox Code Playgroud)
就Ubuntu-18.04我而言,适应是您的需要
参考:
https://github.com/microsoft/WSL/issues/1493
https://devblogs.microsoft.com/commandline/automatically-configuring-wsl
https://gist.github.com/ilbunilcho/4280bd55a10cefef75e74986b6bff936
Bis*_*iyo 22
wslapi.h头文件中的代码片段./* Flags specifying WSL behavior */
typedef enum
{
WSL_DISTRIBUTION_FLAGS_NONE = 0x0,
WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP = 0x1,
WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH = 0x2,
WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING = 0x4
} WSL_DISTRIBUTION_FLAGS;
#define WSL_DISTRIBUTION_FLAGS_VALID (WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP | WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH | WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING)
#define WSL_DISTRIBUTION_FLAGS_DEFAULT (WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP | WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH | WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING)
Run Code Online (Sandbox Code Playgroud)
首次启动时,WSL使用默认标志= 0x7(即0 + 1 + 2 + 4).如果该标志= 0x5(即0 + 1 + 4),则Windows NT路径不会附加在$PATH环境变量中.那么,如何找到那个flags注册表值呢?HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss在注册表编辑器中打开注册表路径.regedit.exe.使用UID值打开每个子项,并DistributionName与您安装的分发名称匹配.然后编辑/添加FlagsDWORD注册表值0x5.
wsl.conf文件来配置Windows和Linux端之间的行为和互操作性.该wsl.conf文件遵循INI文件格式.跑wsl.exe或bash.exe.创建一个文件/etc/wsl.conf.然后在Linux中使用任何文本编辑器添加以下互操作部分.[interop]
enabled=false # enable launch of Windows binaries; default is true
appendWindowsPath=false # append Windows path to $PATH variable; default is true
Run Code Online (Sandbox Code Playgroud)
保存该文件并退出wsl.exe.现在,只要执行WSL,Windows路径就不会附加到Linux $PATH环境变量.
| 归档时间: |
|
| 查看次数: |
2679 次 |
| 最近记录: |