1

私は screen を使用していますが、時々 .bashrc プロファイルを変更します。したがって、すべての画面ウィンドウに .bashrc の変更を適用したいと考えています。残念ながら、画面は新しいウィンドウを作成するためだけにプロファイルを読み取り、既存のウィンドウの .bashrc をリロードしません。

screen セッションに 1 つ以上のウィンドウがあります。画面を添付する前に、ウィンドウごとにコマンドを実行したい。コマンドは単純な「source ~/.bashrc」です。

私は試します:

screen -X stuff "source ~/.bashrc"`echo -ne '\015'`

1つのウィンドウでのみ完全に機能します。そのため、「prev」または「next」コマンドを使用して画面ウィンドウを反復処理することはできません。

私はすでにスクリーンマン、ドキュメントを読んでおり、問題の解決策を検索しようとしています:)

正しい方向に私を導くことができますか?それとも、誰かがすでに同様の問題を解決しているでしょうか?

4

1 に答える 1

2

の最近のバージョンを使用している場合は、オプションscreenを使用できます。元のスレッドこの回答を参照してください。これはここで機能します:-Q

screen -Q windows | sed 's/[^0-9]*/\n/g; s/^\n//g' \
| while read; do 
    screen -S test -p $REPLY -X stuff "source ~/.bashrc"$'\n'
  done

と:

$ screen --version
Screen version 4.01.00devel (GNU) 2-May-06

複数のセッションがある場合は、名前を付けてください-S。この場合、私は というセッションで作業していtestます。-pコマンドを送信するウィンドウを画面に指示します。

ANSI-C 引用符( )の使用にも注意してください$'\n'

-Qコマンドが実行されると、コマンドを実行する前に数秒screen待機し、ゼロにmsgwait設定してこれを回避し、実行後にリセットします。msgwait

screen -S test -X msgwait 0
...
screen -S test -X msgwait 5

5 がデフォルト値です。

于 2012-08-31T17:46:50.397 に答える