WSL用のUbuntuでscreenコマンドが動くようにしました

Updated:

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