0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WindowsでのパスとWSLでのパスが衝突するのを回避する方法

0
Posted at

pyenvをWindows (pyenv-win) とWSLでそれぞれインストールした際に、WSL側で以下のようなエラーが発生し、パスが衝突したため、回避する方法を共有します

/mnt/c/Users/[ユーザー名]/.pyenv/pyenv-win/bin/pyenv: 3: cygpath: not found

原因

本来WSL側のパスを参照すべきところを、Windows側のパスを参照しようとしていることが原因です

echo $PATH/mnt/c/Users/[ユーザー名]/.pyenv/pyenv-win/binが含まれているのが確認できると思います
WSLはデフォルトでWindowsのパスを引き継ぐ設定となっており、Windowsでパスを設定すると自動でWSLにもパスが通ってしまいます

これはWSLからの実行を想定していないプログラムへのパスも通る可能性があり、その上、WSLからWindowsへのアクセスは非常に遅いためデフォルトで設定しているのは、とても気分が悪い設定です
そこで、その設定を解除する方法を紹介したいと思います

WSLへWindowsのPATH設定が引き継がれるのを解除する

方法は以下のページにて紹介されています

WSL2でWindowsのPATH設定が引き継がれるのを解除する
WSL側で以下のようにwsl.confを作成します

# WSL側
sudo vi /etc/wsl.conf
--
# WindowsのPATHを引き継がない設定を追記する
[interop]
appendWindowsPath = false

次にWindows側でWSLの再起動を行います

# Windows側
--
wsl.exe --shutdown

これにより、Windows側のパスがWSL側に引き継がれなくなったのが確認できると思います

個別にWindows側のパスを通したい場合

例えばVS CodeをWSLで使用する場合はWindows側のパスをWSLに通す必要がでてきます
その場合は.profileやシェルのrcファイルに

export PATH=$PATH:'/mnt/c/Users/[ユーザー名]/AppData/Local/Programs/Microsoft VS Code/bin'

を追記することでパスを通すことができます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?