C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

WSL で有効なコマンドの alias を巧く張る方法のメモ

↓こんな感じで alias を仕込むと WSL 環境でのみ alias を張れます:

if [[ $(grep -i Microsoft /proc/version) ]]; then
  alias code="/mnt/c/Users/usagi/AppData/Local/Programs/Microsoft\ VS\ Code/bin/code"
  alias display.blank="/mnt/c/Windows/System32/scrnsave.scr /s"
  alias power.sleep="/mnt/c/Users/usagi/app/PSTools/psshutdown.exe -d -t 0 -accepteula"
  alias power.hibernate="/mnt/c/Windows/System32/shutdown.exe /h"
  alias power.reboot="/mnt/c/Windows/System32/shutdown.exe /r"
  alias power.logoff="/mnt/c/Windows/System32/shutdown.exe /l"
  alias power.shutdown="/mnt/c/Windows/System32/shutdown.exe /s"
fi

↑の例では:

  • /proc/version を見て WSL を判定して
    • $HOME の環境を複数のPC、異なるOSで共有している人には管理コストをひとまとめにして分岐を書くのも便利な方法の1つと思います
  • code (VSCode)を host 側で起動する (ホストWindows環境のパスを継承する設定で使っている場合は要らないやつです)
  • display.blank はブランクスクリーンのスクリーンセーバーを起動する事で、画面を一時的にすべて黒くしたい時に使うコマンドです
    • note: 写真撮影するときに画面が映り込んだり色が狂うのが嫌な時に便利です
  • power.* 系のコマンドは電源制御のお馴染みのコマンド群です。寝る前はたいてい power.sleep

/proc/version

WSL だと↓のように microsoft が入るので判定に使用できています:

Linux version 4.19.84-microsoft-standard (oe-user@oe-host) (gcc version 8.2.0 (GCC)) #1 SMP Wed Nov 13 11:44:37 UTC 2019

WSLの判定方法は他にも複数思いつきます。わりとなんでもよいと思います。