デフォルトでは、GNU Screen で新しいウィンドウを作成すると、Screen が呼び出されたディレクトリで開始されます。現在開いているウィンドウの現在の作業ディレクトリで、GNU Screen で新しいウィンドウを開始したいのですが、どうすればよいですか?
8 に答える
GNU Screenchdir
コマンドを参照してください。Screen で作成されたすべての新しいウィンドウは、これを初期ディレクトリとして使用します。これを使用すると、次のようなことができます。
chdir /home/dan/newscreendir
screen
そして、新しいウィンドウ (今後作成されるウィンドウと一緒に) は set ディレクトリに置かれます。screenrc
常に現在の作業ディレクトリになる場合は、これを 1 つのコマンドで実行するように何かを設定できる場合があります。
GNU Screen の man ページを参照してください。それはかなり包括的です。
Screen はシェル変数にアクセスすることも、バッククォート コマンドを実行することもできません。ワンクリックで実行できる最も近い方法は、次のような小さな Bash スクリプトを使用することです。
screen -X setenv currentdir `pwd`
screen -X eval 'chdir $currentdir' screen
またはよりコンパクトに:
screen -X eval "chdir $PWD"
screen -X
現在実行中の Screen セッションにコマンドを送信します。最初の行は、 という変数を作成しますcurrentdir
。2 行目はコマンドに を送信しcurrentdir
、chdir
新しい Screen ウィンドウを作成します。
簡単な解決策は、次の文字列を~/.screenrcファイルに入れ、 Ctrl+を使用Xして新しいウィンドウを開くことです。
bind ^x
bind ^x stuff "screen -X chdir \$PWD;screen^M"
http://www.michaelkelleher.infoには中級/上級のスクリーン ユーザー向けのヒントがありましたが、そのサイトはなくなったようですので、 Michael Kelleher's Personal Website on Archive.orgでアーカイブを見つけることができます。
ウィンドウ内で既にプロセスが実行されている場合に機能する解決策が見つからなかったため、独自のアイデアを思いつきました。.bash_profileファイルに次の行を追加しました。
scr_cd()
{
cd $1
screen -X chdir $PWD
}
if [ "$TERM" == 'screen' ]; then
alias cd=scr_cd
fi
ディレクトリを変更するたびに、画面の作業ディレクトリが更新されます。このアプローチを好まない人もいるかもしれませんが、魅力的に機能します。
次を実行することもできます。
screen -X eval "chdir $(pwd)"
または、chdir を設定したらすぐに新しいウィンドウを開始したい場合は、次を使用します。
screen -X eval "chdir $(pwd)" screen
私は Bash のほぼ完璧なソリューションを持っています。:)
password
ロック画面のパスワードを設定するために使用したことがない場合は、これを file に追加して$HOME/.bash_profile
ください:export PROMPT_COMMAND='screen -p $WINDOW -X chdir "$PWD"'
パスワードは必要ですか?これとともに:
# The digest of password "abc" is ID1wIq4l2t7s6 export PROMPT_COMMAND='screen -p $WINDOW -X eval "password none" "chdir \"$PWD\"" "idle 0 password ID1wIq4l2t7s6"'
PWD
Screen の開発者ができるだけ早く環境変数を追加することを願っています。
毎回同じコマンドが必要な場合は、コマンド.screenrc
を使用する行をファイルに追加します。chdir
そのセッション内で実行中の Screen セッションがある場合は、次のように入力できます。
screen -X chdir [argument]
引数を指定しないと、ホーム ディレクトリになり、 と入力した場合と同じ結果になりますcd
。
スクリプト (これはプログラミング Q&A サイトです) がある場合、または Screen の外部にいて、Screen が実行されている場合は、次のコマンドを発行できます。
`which screen` -x -X chdir [argument]
Screen でいくつかの新しいプロセスを実行すると、次のようになる可能性があります。
`which screen` -x -X screen [command to run in that directory] [arguments for the command]