web-dev-qa-db-ja.com

WSLからWin10のPATHを削除する方法

私はWin10でWindowsサブシステムLinux(Ubuntu 18.04)を使用しており、そこにMavenをインストールしています。それに、以前はWin10にmavenをインストールしていました。 WSLでmvn compileを使用すると、Mavenコンパイルが失敗することが通知されました。私はwhich mvnを使用しており、Win10にインストールされているMavenを参照していることがわかります。

さらに、envを実行したところ、Win10のパスがWSLのパスに追加されていることがわかりました。 WSLを使用する場合、Win10のパスで何も使用したくないのですが、どうすればよいですか?

12
Sineatos
  • 17713より低いWindowsビルドの場合:WSLは WSL_DISTRIBUTION_FLAGS Enumeration を使用して、WindowsとLinux側の間の動作と相互運用性を構成します。これは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)
    

    最初の起動時に、WSLはデフォルトのフラグ= 0x7(つまり、0 + 1 + 2 + 4)を使用します。そのフラグが0x5(つまり0 + 1 + 4)の場合、Windows NTパスは$PATH環境変数に追加されません。では、どのようにしてフラグレジストリ値を見つけるのでしょうか。レジストリエディタ(別名)でHKCU\Software\Microsoft\Windows\CurrentVersion\Lxssレジストリパスを開きます。 regedit.exe。各サブキーをUID値で開き、DistributionNameをインストール済みのディストリビューション名と一致させます。次に、Flags DWORDレジストリ値を編集または0x5に追加します。

  • Windowsビルドの場合 17713より高い :新しいビルドでは、WSLは wsl.conf file を使用して、WindowsとLinux側の動作と相互運用性を設定します。そのwsl.confファイルは INIファイル形式 に従います。 wsl.exeまたはbash.exeを実行します。ファイル/etc/wsl.confを作成します。次に、Linuxの任意のテキストエディターで次の interop section を追加します。

    [interop]
    enabled=false # enable launch of Windows binaries; default is true
    appendWindowsPath=false # append Windows path to $PATH variable; default is true
    

    そのファイルを保存して、wsl.exeを終了します。 WSLが実行されるときはいつでも、WindowsパスはLinux $PATH環境変数に追加されません。

21
Biswapriyo