Wie kann ich GNU Screen automatisch starten, wenn ich ein neues Terminalfenster öffne?

7

Ich verwende Ubuntu 14.04 (Cinnamon Mint 17.1) mit Bash. Jedes Mal, wenn ich ein neues Terminalfenster öffne, betrete ich screen, um den Bildschirmfenstermanager zu starten, aber ich möchte, dass die Shell dies für mich erledigt.

Ich glaube, ich muss ändern .bashrcstatt .profile, so dass es bei jedem neuen Terminalfenster beginnt, nicht nur bei der Anmeldung. Deshalb habe ich am Ende von Folgendes hinzugefügt .bashrc, um den Shell-Prozess zu ersetzen:

exec /usr/bin/screen -q

Wenn ich ein neues Terminalfenster starte:

  • Normalerweise erhalte ich ein leeres Fenster mit einem blinkenden Cursor und die Bash-Eingabeaufforderung wird erst angezeigt, nachdem ich gedrückt habe Ctrl+C.
  • Manchmal wird das Terminalfenster sofort geschlossen, wenn ich drücke Ctrl+Coder wenn ich die Größe des Terminalfensters ändere.
  • Manchmal erhalte ich eine Bash-Eingabeaufforderung mit Nein $LS_COLORS(obwohl es schwierig ist, dies zu reproduzieren, bin ich mir nicht ganz sicher, wann oder warum es passiert).

Kann jemand erklären, warum dies für mich fehlschlägt, und eine Lösung vorschlagen?

Vielen Dank,

Huw

Huw Walters
quelle
Möglicherweise möchten Sie am Ende des Befehls ein '&' hinzufügen.
Wir sind Borg
Ist Laufen screenüber basheine Möglichkeit? Das heißt screen -q, ich hatte immer Probleme beim gnome-terminaldirekten Ausführen von Befehlen. Ich bin mir ziemlich sicher, dass dies etwas damit zu tun hat.
Kos
@kos: Nein, das habe ich schon versucht. Ich erhalte das gleiche Ctrl+CVerhalten "leerer Bildschirm mit aktivierter Bash-Eingabeaufforderung ", kann dann aber das Terminalfenster nicht mit schließen Ctrl+D.
Huw Walters
@WeareBorg: Ich bekomme eine Bash-Eingabeaufforderung mit Must be connected to a terminal.und starte screenüberhaupt nicht.
Huw Walters
Dies ist der Cowsay, den ich in bashrc habe, den ich hinzugefügt habe. Vielleicht hilft es, wenn ich jedes Mal, wenn ich einen neuen Tab öffne, die Glücksausgabe sehe: pastebin.com/25fPSr8n
Wir sind Borg

Antworten:

5

Wenn der Bildschirm gestartet wird, startet das erste Fenster Ihre Shell und Sie haben Ihre Shell angewiesen, den Bildschirm zu starten. Wenn der Bildschirm gestartet wird, startet das erste Fenster Ihre Shell und Sie haben Ihre Shell angewiesen, den Bildschirm zu starten. Dann, wenn der Bildschirm startet ...

Aufschäumen, ausspülen, wiederholen.

screen setzt die $TERMVariable auf "screen", um endlos rekursive Aufrufe des Bildschirms ("Schildkröten ganz nach unten") zu vermeiden. Ihre .bashrc kann enden mit:

[[ $TERM != "screen" ]] && exec screen -q
Glenn Jackman
quelle
1
Nur für den Fall, dass jemand versucht, dies in Ubuntu 16.04 mit dem Standardterminal zu replizieren: Fügen Sie dies zu Ihrer .bashrc[[ $TERM != "screen.xterm-256color" ]] && exec screen -q
bluppfisk
Um zu überprüfen, mit welchem ​​Wert Sie vergleichen müssen $TERM, führen Sie den Bildschirm aus und geben Sie ihn ein, echo $TERMbevor Sie ihn bearbeiten .bashrc.
Pierre