私はWin10でWindowsサブシステムLinux(Ubuntu 18.04)を使用しており、そこにMavenをインストールしています。それに、以前はWin10にmavenをインストールしていました。 WSLでmvn compile
を使用すると、Mavenコンパイルが失敗することが通知されました。私はwhich mvn
を使用しており、Win10にインストールされているMavenを参照していることがわかります。
さらに、env
を実行したところ、Win10のパスがWSLのパスに追加されていることがわかりました。 WSLを使用する場合、Win10のパスで何も使用したくないのですが、どうすればよいですか?
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
環境変数に追加されません。