解決策 1:
(StackOverflow の「How can I know whether I'm in a screen?」から盗用され、ユーザー jho によって作成されました。追伸。StackExchange サイト間で重複するものに投票することはできません。)
$STY
をチェック . null の場合は、「実際の」端末を使用しています。何かが含まれている場合、それは現在の画面の名前です。
画面にいない場合:
[email protected] ~ $ echo $STY
[email protected] ~ $
画面にいる場合:
[email protected] ~ $ echo $STY
2026.pts-0.ip-10-0-1-71
screen の代わりに tmux を使用する場合は、$TMUX
もチェックしてください .これをプロンプトに追加するには、次を ~/.bashrc
に追加します :
if [ -n "$STY" ]; then export PS1="(screen) $PS1"; fi
if [ -n "$TMUX" ]; then export PS1="(tmux) $PS1"; fi
解決策 2:
$STY
を探します screen
の詳細を提供します それ自体と通信するために使用します。 $WINDOW
現在の screen
になります ウィンドウ番号。
解決策 3:
私が通常使用する簡単なチェックは、Ctrl を押すことです。 -a :
-
カーソルが行頭にジャンプした場合 、私は中にいません スクリーンセッション。
-
何も起こらない場合 、私は私が中にいることを知っています スクリーンセッションで、スクリーンコントロールキーを使用したばかりです。次に a を押します (行頭にジャンプ), w (現在の画面ウィンドウを表示する) または、他の「害のない」画面コマンドを実行して、コマンド プロンプトに戻ります。
(もちろん、これは現在 bash や、「行の先頭にジャンプする」ソフトウェアを実行している場合、または Ctrl-a を押したときに同等に害のないことを実行している場合にのみ機能します。)
解決策 4:
まあ、ほとんど あなたの TERM
screen
に設定されます (または、少なくとも screen
について言及してください
この問題の簡単な解決策は、画面をどこでも実行することです。それなしで家を出ないでください。
解決策 5:
これを .bashrc
に入れておきます :
PS1='[\[email protected]\h \W'
if [ "$WINDOW" ]; then PS1="$PS1 ($WINDOW)"; fi
PS1="$PS1]$"
これは絶対確実ではありませんが、新しい画面を作成するたびにプロンプトにウィンドウ番号が表示されます.If I'm not running screen
、番号がありません。