WSL上で実行されているかどうかを判定する

スクリプトがWSL上のLinuxで動作しているかどうかを判定できるようにしておくと、
macOSやWSLといった複数環境をサポートするスクリプトを書いている時に少しだけ便利になります.

判定方法としては、ファイルの内容やコマンドの実行結果によって判断する方法などいくつか存在しますが、
今回は「/proc/sys/fs/binfmt_misc/WSLInteropファイルが存在しているかどうか」で判定する方法です.

/proc/sys/fs/binfmt_misc/WSLInteropファイルが存在しているかどうか」だけなので非常に簡単に判定することができます.

[ -e /proc/sys/fs/binfmt_misc/WSLInterop ]

実際にスクリプトで使う利用する場合には、関数として切り出しておき必要に応じて呼び出すようにしておくと良さそうです.

#!/usr/bin/env bash

os::is_wsl() {
  [ -e /proc/sys/fs/binfmt_misc/WSLInterop ]
}

# e.g. if-statement
if os::is_wsl; then
  # WSL
else
  # Others
fi

※ 個人で利用しているdotfilesではos::is_wsl()のように関数として定義しています