15

.bashrc現在のターミナル ウィンドウが GNU screen によって管理されている場合にのみ実行したいコマンドがあります。どうすればいいですか?そのための環境変数はありますか?私はかつて持っていた

if [ -n "$WINDOW" ]; それから
    指図
フィ

しかし、私が知る限り、$WINDOWすべての画面管理セッションで定義されている場合と定義されていない場合があります。

4

5 に答える 5

18

環境変数 $STY (画面に関する情報を含む) または $TERM が「画面」であること (おそらく信頼性が低い) を確認してください。

于 2010-08-12T22:19:26.323 に答える
5

シグニンは正しい

ドキュメントを見る

http://www.gnu.org/software/screen/manual/html_node/Environment.html

STY

代替ソケット名。screenが呼び出され、環境変数が設定されている場合、新しいセッションを開始するのではなくSTY、実行中のセッションにウィンドウのみを作成します。screen

于 2011-11-26T00:08:51.163 に答える
4

を確認$TERMしてください。画面セッションで「 」に設定されていscreenます.. (ただし、100%保証されているわけではありません)

アップデート

$TERMCAPまたは、画面に画面の部分文字列が含まれているという事実を利用できます。

[[ $TERMCAP =~ screen ]] && echo "in screen"

また、100%保証するものではありません

更新2

どちらのアプローチも機能しない場合は、画面のマニュアルでインスピレーションを見つけることができます

于 2010-08-12T21:45:18.983 に答える
2

screen常に表示され、セッション内にいることを確認する必要のない代替ソリューションを提案したいと思います。

フォルダーにファイル~/.screenrcを追加/編集して、コマンドを追加するだけです。$HOMEcaption

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でこのヒットを見つけました

于 2017-04-23T12:16:49.840 に答える
1

変数 $TERM をチェック

于 2010-08-12T21:45:30.503 に答える