Closed3
シェルスクリプトでWSL上のLinux環境を判定する
WSL固有の処理を行いたい
シェルスクリプト内でWSLの環境を判定して、処理を分岐したいことがよくあるので備忘録。
WSLはLinuxとして判定できるが、WSL上で動いているLinuxと区別したい場合の処理。
Termux(Android)での環境分岐も以前スクラップにしているため、詳しくは以下を参照のこと。
WSLの分岐処理判定
シェルスクリプト内でOSに分岐を入れる場合、unameコマンドの結果からif
やcase
などで処理を分岐させることが多い。
WSLでunameコマンドを使用した場合以下のような結果となる。
$ uname
Linux
このままではWSLの判定ができないため、WSLの判定に使うパスのようなものがあればいい。
この手のやり方は多数あるが、よく使うものをまとめておく。
WSLInteropの有無での判定
WSLにて環境固有のファイルWSLInteropがあるか。判定して分岐させる。
WSLの環境ではHello WSL!
と表示し、それ以外ではOther os
と出力するシェルスクリプト。
wsl.sh
#!/usr/bin/env bash
if [ -f /proc/sys/fs/binfmt_misc/WSLInterop ]; then
echo "Hello WSL!"
else
echo "Other os"
fi
WSLで実行すると以下のような結果になる。
$ bash wsl.sh
Helllo WSL!
WSLnteropが存在するのでHello WSL!
と出力されるのが確認できた。
このスクラップは2022/07/06にクローズされました