bashスクリプトを実行するときにこれが可能であることを確認したいと思いますscreen
。
.bashrc
セッションが画面内で開始されるかどうかに応じて、コマンドプロンプトの色を設定できるようにしたいです。
回答を受けた後、次のリンクが見つかりました。私が画面にあるかどうかはどうすればわかりますか?
ベストアンサー1
通常$STY
設定されます。
だから:
if [ -n "$STY" ]; then
echo "I'm most likely running under screen"
fi
$STY
通常会話を共有するために必要なものscreen
。制御に使用されるUnixドメインソケットへのパスを設定するために使用されますscreen
(/var/run/screen/S-$USER/$STY
。
ssh
たとえば、この画面で別のコンピュータに接続しても機能しません。ここで実行されているシェルは$STY
その環境には1つもなく、コンピュータのUnixドメインソケットにアクセスできないため、とにかく役に立ちません。
ただし、端末はエスケープシーケンスを使用してそのタイプを決定するように照会できます。
if [ -t 1 ] && [ -t 0 ]; then
s=$(stty -g)
stty -icanon -echo min 0 time 3
printf '\033[>c'
type=$(dd count=1 2> /dev/null)
stty "$s"
case $type in
(*'>83;'*) echo "this is screen"
esac
fi
@val0x00ffが提案した別のアプローチは、環境変数の値を確認することです$TERM
。この値は、アプリケーションがどのタイプの端末と通信しているかを知らせるためのものです。 (さまざまなターミナルバリエーションが実装される可能性があります)screen
で始まるものに設定されています。通り過ぎる、、、。上記のように動作することを保証することはできませんが、より簡単で邪魔になりません。screen
screen
$TERM
rlogin
rsh
telnet
ssh
case $TERM in
(screen*) echo "I'm more than likely running in screen"
esac
以前の解決策と同様に、実行している可能性がありますが、screen
コマンドを実行できない可能性がありますscreen -X
。ただし、エスケープシーケンスを使用してコマンドを渡すことができます(セキュリティ上の理由からデフォルトでは有効になっていませんが)。