WSL2を開発環境として使用する際に最初に行う設定と注意点

text

筆者はWindows11のWSL2にUbuntuをインストールして使用しています。一昔前はこのようなイケてる開発環境がWindowsには無かったため、Macを利用していましたが、最近はとても便利になったため、メインの開発機はWindowsを使用するようになりました。

今回はWSL2にUbuntuをインストールして使用するときに最初に行うべき設定や注意点などをまとめていきます。

環境変数を設定する

WSL2では環境変数$PATHにはWindows側の設定が引き継がれています。これがとても使いづらいです。大きな理由としてはWindows側の環境変数の設定が優先されて$PATHに反映されてしまうため、WSL2(Ubuntu)を立ち上げるたびにsource ~/.profileを実行し、Ubuntu側の~/.profileに記載している環境変数への設定を読み込まなければいけない手間が発生するからです。これはWSL2を使い始めたばかりの人が一番最初に躓くポイントだと思います。

Windows側の環境変数の設定を引き継がないようにする

WSL2への設定は/etc/wsl.confに記載します。

viなどのエディタを使用し、wsl.confファイルを開きます。

sudo vi /etc/wsl.conf

wsl.confファイルには以下のように記載してください。

# WindowsのPATHを引き継がない設定を追記する[interop]appendWindowsPath = false

設定が終わったら一度WSL2を停止してください。コマンドプロンプトを立ち上げ(Windowsキー + Rを押し、cmdと入力してEnterを押す)、以下のコマンドを実行します。

wsl.exe --shutdown

完全に停止したら再度WSL2を立ち上げましょう。

反映されたことを確認する

echoコマンドでPATH変数を出力し、Windows側の設定が引き継がれていないことを確認してください。

echo $PATH

WSL2(Ubuntu)側から改めて環境変数PATHへ設定を追加したいときは、ホームディレクトリにある.profileファイルの最下行にexportコマンドでパスを書き足しましょう。

まずはホームディレクトリの.profileファイルをviで開きます。

vi ~/.profile

.profileファイルの末尾に以下のようにパスの設定を書き足します。
※パスごとの区切りは「:」です。行の末尾に「:$PATH」を書いているのは加算代入(もともと$PATHに設定していたパスの情報もくっつけて$PATHに代入したいから)です。

export PATH=$HOME/.nodebrew/current/bin:$PATH

最後に設定を読み込ませます。

source ~/.profile

これでWindows側から環境変数が引き継がれることはなくなり、Ubuntu側から環境変数を設定することができました。

小ネタ エクスプローラからWSL環境へアクセスする方法

ときには面倒くさくなってエクスプローラからどうしてもWSL環境を触りたくなるときがあるかもしれません。そんなときは、\\wsl$\ディストリビューション名というパスでエクスプローラからアクセスすることができます。Ubuntuであれば、\\wsl$\Ubuntuになります。

小ネタ 外付けHDDやUSBをマウントする方法

WSL2は、自動的にCドライブを/mnt/cにマウントしてくれますが、私の環境ではその他のデバイスはマウントしてくれませんでした。そのため、外付けHDD、USB、ネットワークドライブなどを使用するときは手動でマウントする必要があります。

  1. マウントするディレクトリを作成します。
sudo mkdir /mnt/i
  1. Iドライブとして認識しているものを/mnt/iにマウントします。

「DrvFs」は、WSL環境(Linux環境)にWindowsのボリュームをマウントし、LinuxからWindowsのファイルにアクセスできるようにする仕組みです。

sudo mount -t drvfs I: /mnt/i

参考資料
WSL その27 – WSLがサポートするファイルシステム(後編)・WSLのファイルシステム – kledgeb
Windows 10の「WSL」でネットワークドライブなどをマウントする:Tech TIPS – @IT
Windows10でおしゃれにWSL – おしゃれな気分でプログラミング
WSL2でWindowsのPATH設定が引き継がれるのを解除する

投稿者 SmokyDog

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です