.bashrc
現在のターミナル ウィンドウが GNU screen によって管理されている場合にのみ実行したいコマンドがあります。どうすればいいですか?そのための環境変数はありますか?私はかつて持っていた
if [ -n "$WINDOW" ]; それから 指図 フィ
しかし、私が知る限り、$WINDOW
すべての画面管理セッションで定義されている場合と定義されていない場合があります。
.bashrc
現在のターミナル ウィンドウが GNU screen によって管理されている場合にのみ実行したいコマンドがあります。どうすればいいですか?そのための環境変数はありますか?私はかつて持っていた
if [ -n "$WINDOW" ]; それから 指図 フィ
しかし、私が知る限り、$WINDOW
すべての画面管理セッションで定義されている場合と定義されていない場合があります。
環境変数 $STY (画面に関する情報を含む) または $TERM が「画面」であること (おそらく信頼性が低い) を確認してください。
シグニンは正しい
ドキュメントを見る
http://www.gnu.org/software/screen/manual/html_node/Environment.html
STY
代替ソケット名。
screen
が呼び出され、環境変数が設定されている場合、新しいセッションを開始するのではなくSTY
、実行中のセッションにウィンドウのみを作成します。screen
を確認$TERM
してください。画面セッションで「 」に設定されていscreen
ます.. (ただし、100%保証されているわけではありません)
アップデート
$TERMCAP
または、画面に画面の部分文字列が含まれているという事実を利用できます。
[[ $TERMCAP =~ screen ]] && echo "in screen"
また、100%保証するものではありません
更新2
どちらのアプローチも機能しない場合は、画面のマニュアルでインスピレーションを見つけることができます
screen
常に表示され、セッション内にいることを確認する必要のない代替ソリューションを提案したいと思います。
フォルダーにファイル~/.screenrc
を追加/編集して、コマンドを追加するだけです。$HOME
caption
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m} %Y-%m-%d %0c"
そして、常に表示され、色付けされている一番下の 1 行を取得します。
Screen session on host (system load: 1.50 1.40 1.30) 2017-04-23 14:06
ご注意ください:
host1 の screen 内にいて、host2 への別の SSH セッションを開き、そこに screen を開くと
.screenrc
、下部に 2 行が下から上に積み重ねられます (ラッパーのように)。そんな時にこれはとっても便利!
Screen session on host2 (system load: 0.01 0.03 0.05) 2017-04-23 14:14
Screen session on host1 (system load: 0.00 0.00 0.00) 2017-04-23 14:14
追加情報:
https://www.gnu.org/software/screen/manual/html_node/Caption.html
Command: caption always|splitonly [string]
https://www.gnu.org/software/screen/manual/html_node/String-Escapes.html#String-Escapes
SOでこのヒットを見つけました。
変数 $TERM をチェック