Lösung 1:
(Gestohlen aus „Wie kann ich feststellen, ob ich mich in einem Bildschirm befinde?“ auf StackOverflow und verfasst von Benutzer jho. P.S. Sie können auf StackExchange-Sites nicht für ein Duplikat stimmen.)
Überprüfen Sie $STY
. Wenn es null ist, befinden Sie sich auf einem "echten" Terminal. Wenn es etwas enthält, ist es der Name des Bildschirms, in dem Sie sich befinden.
Wenn Sie nicht im Bildschirm sind:
[email protected] ~ $ echo $STY
[email protected] ~ $
Wenn Sie sich im Bildschirm befinden:
[email protected] ~ $ echo $STY
2026.pts-0.ip-10-0-1-71
Wenn Sie tmux anstelle von screen verwenden, prüfen Sie auch $TMUX
. Um dies zu Ihrer Eingabeaufforderung hinzuzufügen, fügen Sie Folgendes zu Ihrem ~/.bashrc
hinzu :
if [ -n "$STY" ]; then export PS1="(screen) $PS1"; fi
if [ -n "$TMUX" ]; then export PS1="(tmux) $PS1"; fi
Lösung 2:
Suchen Sie nach $STY
die Details enthält, die screen
verwendet, um mit sich selbst zu kommunizieren; $WINDOW
ist dann der aktuelle screen
Fensternummer.
Lösung 3:
Die einfache Überprüfung, die ich normalerweise verwende, besteht darin, einfach Strg zu drücken -a :
-
Wenn der Cursor zum Zeilenanfang springt , ich bin nicht drinnen eine Bildschirmsitzung.
-
Wenn nichts passiert , ich weiß, dass ich drinnen bin eine Bildschirmsitzung und dass ich gerade die Bildschirmsteuerungstaste verwendet habe. Ich habe dann a gedrückt (zum Zeilenanfang springen), w (aktuelle Bildschirmfenster anzeigen) oder einen anderen "harmlosen" Bildschirmbefehl ausführen, um zur Eingabeaufforderung zurückzukehren.
(Natürlich funktioniert dies nur, wenn Sie gerade bash oder eine andere Software ausführen, die "zum Anfang der Zeile springt" oder etwas ähnlich Harmloses macht, wenn Sie Strg-a drücken.)
Lösung 4:
Nun, die meisten der Zeit (abgesehen von jemandem, der versucht, Dinge zu vermasseln) Ihre TERM
wird auf screen
gesetzt (oder zumindest screen
erwähnen irgendwo).
Die einfache Lösung für das Problem besteht darin, den Bildschirm überall auszuführen. Verlasse das Haus nicht ohne, sage ich.
Lösung 5:
Ich bewahre dies in meinem .bashrc
auf :
PS1='[\[email protected]\h \W'
if [ "$WINDOW" ]; then PS1="$PS1 ($WINDOW)"; fi
PS1="$PS1]$"
Es ist nicht narrensicher, aber immer wenn ich einen neuen Bildschirm erstelle, fügt es die Fensternummer in die Eingabeaufforderung ein. Wenn ich nicht screen
ausführe , es gibt keine Nummer.