如何从WSL中删除Win10的路径

我在Win10中使用Windows子系统Linux(Ubuntu18.04),并在其中安装了一个Maven。
此外,我以前在Win10中安装过maven。
现在,当我在WSL中使用mvn compile时,它告诉我maven编译失败。
我使用哪个mvn,发现它引用了Win10中安装的Maven

此外,我运行env,发现Win10的路径被添加到WSL的路径中。
当我使用WSL时,我不想使用Win10路径中的任何东西,我应该怎么做

  • 对于低于17713的Windows构建:WSL使用WSL_DISTRIBUTION_FLAGS枚举来配置其行为以及Windows和Linux端之间的互操作性。下面是来自wslapi.h头文件的代码片段

    指定WSL行为的标志*/
    类型定义枚举
    {
    WSL\u分布\u标志\u无=0x0,
    WSL\u分布\u标志\u启用\u互操作=0x1,
    WSL\u分布\u标志\u附加\u NT\u路径=0x2,
    WSL\u分布\u标志\u启用\u驱动器\u安装=0x4
    }WSL_分布_标志;
    #定义WSL_分布_标志_有效(WSL_分布_标志_启用_互操作| WSL_分布_标志|追加| NT_路径| WSL_分布_标志_启用_驱动器|
    #定义WSL_分布_标志_默认值(WSL_分布_标志_启用_互操作| WSL_分布_标志|追加| NT_路径| WSL_分布_标志_启用_驱动器|

    在第一次启动时,WSL使用默认标志=0x7(即0+1+2+4)。如果该标志=0x5(即0+1+4),Windows NT路径将不会追加到环境变量$path中。那么,如何找到该标志的注册表值呢?在注册表编辑器中打开HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss注册表路径regedit.exe。使用UID值打开每个子项,并将DistributionName与安装的分发名称匹配。然后将标志DWORD注册表值编辑/添加到0x5

  • 对于高于17713的Windows版本:在新版本中,WSL使用WSL.conf文件来配置其行为以及Windows和Linux端之间的互操作性。该wsl.conf文件遵循INI文件格式。运行wsl.exebash.exe。创建一个文件/etc/wsl.conf。然后使用Linux中的任何文本编辑器添加以下互操作部分

    [interop]
    enabled=false#启用Windows二进制文件的启动;默认值为true
    appendWindowsPath=false#将Windows路径附加到$path变量;默认值为true
    

    保存该文件并退出wsl.exe。现在,无论何时执行WSL,Windows路径都不会附加到Linux$PATH环境变量

正如AndrewBourgeois所提到的,您可能需要使用wsl--shutdownwsl-t<分销&gt以使更改生效

发表评论