screen のカレントディレクトリは chdir で変更する
GNU Screen にはカレントディレクトリがあり、新しいウィンドウを作成した時の初期ディレクトリとして使用されます。screen
のカレントディレクトリは chdir コマンド で変更できます。
:chdir /path/to/dir
pwd の結果を chdir に指定することが多い
screen
を日常的に使うようになってから chdir コマンド を使うことが増えました。ただし、pwd
の結果を chdir
に指定することがほとんどです。以下の手順でおこなっていたのですが、頻繁にやるには面倒です。
-
pwd
でカレントディレクトリを表示する - screen でコピーする
-
chdir
まで打つ - screen でペーストする
- Enter キーを押す
screen.chdir という関数にまとめた
ということで、上記を行う関数を作成しました。これを .bashrc
などに書いておきます。
.bashrc
function screen.chdir
{
if [[ "${STY:-}" == '' ]]; then
echo "Not in screen." >&2
else
declare -r target="${1:-$(pwd)}"
screen -S "${STY}" -X chdir "${target}"
fi
}
シェルで次のように呼び出すだけで、pwd
の結果を screen のカレントディレクトリに設定できるようになりました。
$ screen.chdir
screen.chdir の解説
screen
の -S
と -X
オプションを用いることで、実行中のセッションにコマンドを送ることができます。
$ screen -S SESSION_NAME -X COMMAND
環境変数 STY
でソケット名を取得できるので、その値を -S
に指定します。
これらを組み合わせることで screen.chdir を実装しました。