WSL用のUbuntuでscreenコマンドが動くようにしました
screenコマンドは私のお気に入りのコマンドです。 screenを使うと、複数の仮想端末を起動して、好きなタイミングで切り替えられます。 また、ターミナルソフトからホストへの接続を切り離して(=ログアウトして)、 後ほど再ログインしても仮想端末はそのまま終了せずに残っています。
このように非常に便利なツールなので、もし使えないと作業効率が大幅に低下してしまいます。
さて、WSL(Windows Subsystem for Linux)で動作するUbuntu 18.04LTSでscreenコマンドを起動すると、次のメッセージを表示して失敗します。
Cannot make directory '/run/screen': Permission denied
screenが使えないと困るので、調査してみました。
screenがソケットを作るディレクトリ/run/screen
が無いのが原因でした。
このディレクトリを作ってやれば解決するのですが、
調べてみると、WSLでは、手で/run/screen
を作っても、ブート時に消されてしまうようです。
そこで、環境変数SCREENDIR
によって、ソケット用のディレクトリを指定することにしました。
具体的には、~/.bashrc
に次の1行を追加してやれば、(次にログインした時から)screenコマンドが使えるようになります。
export SCREENDIR=$HOME/.screen