GNU-Bildschirm als Login-Shell verwenden

22

Was ist der beste Weg, um den Bildschirm automatisch starten zu lassen, wenn Sie eine neue Shell öffnen, sei es durch Login, xterm oder irgendetwas anderes?

Am häufigsten wird empfohlen, exec screendie rc- oder Login- / Profildatei Ihrer regulären Shell einzufügen, aber zum Beispiel führen Login-Shells für tcsh .login last aus, während Nicht-Login-Shells .cshrc last lesen. Wenn ich exec screen.cshrc eingebe, wird die .login-Datei nicht von Anmelde-Shells bezogen, und wenn ich sie in .login eingebe, werden Nicht-Anmelde-Shells nicht auf dem Bildschirm ausgeführt. Ich gehe davon aus, dass es ähnliche Probleme mit anderen Muscheln gibt.

wfaulk
quelle
1
Dies ist keine Antwort auf die Frage, aber es ist erwähnenswert: tmux ist eine revolutionäre Weiterentwicklung des Bildschirms und versucht, der Tastatur nahe zu kommen, die mit dem Bildschirm kompatibel ist. Auf dieser Seite erfahren Sie, wie Sie es automatisch aus .bashrc starten.
Datumsschamane

Antworten:

19

Ein Weg ist:

# if $STY is not set...
if [ -z "$STY" ]; then
    exec screen -ARR
fi

Beachten Sie, dass dies für geschrieben ist bash, aber auch für ähnlich sein sollte csh. Legen Sie .cshrces für alle Muscheln ausgeführt werden.


Ein anderer Weg: Sie können einfach als Ihre Login-Shell in sich selbst festlegenscreen/etc/passwd und diese Zeile an Ihre ~/.screenrc: (Fixieren Sie den Pfad natürlich.)

defshell / bin / csh

Dies kann jedoch Programme zum Absturz bringen, die die in /etc/passwdfür verschiedene Befehle definierte Anmeldeshell ausführen.

( Bearbeiten: Vergessen Sie nicht, Bildschirm hinzuzufügen /etc/shells)

Grawity
quelle
1
Ich wusste vorher nichts über die STY-Variable, und als ich sie im Bildschirmhandbuch nachgeschlagen habe, habe ich auch festgestellt, dass Sie den Bildschirm in einem Bildschirm ausführen können, um Befehle in einem neuen Fenster auszuführen (z. B. wird "screen vi" in einem geöffnet neues Fenster, ohne kontrollierende Shell). Übrigens, für csh würden Sie es in der .login-Datei ablegen, nicht in der .cshrc-Datei. Sie möchten nicht, dass es für "alle" Shells ausgeführt wird. Für Bash gilt etwas, schreiben Sie es in .profile oder .bash_login, nicht in .bashrc.
Haridsv
4

Alte Frage, aber googeln für die gleiche Sache brachte mich hierher, also hier ist eine Antwort für alle anderen, die auf diese Seite stolpern.

Das Beste, was ich bisher gefunden habe, ist byobu, wenn deine Distribution es hat. Kommt mit einer Option zum Ausführen bei der Anmeldung und steuert mehrere Bildschirme gleichzeitig.

Sie können an einem Ort trennen und sich abmelden und sich dann an einem anderen Ort bei derselben Sitzung anmelden.

Ich finde, der Bildschirm ist großartig, um Serverprozesse auszuführen, aber byobu ist großartig für alltägliche Dinge.

Solbot
quelle
-2

Wie wäre es mit chsh:

chsh /usr/bin/screen

Dadurch wird die Standardanmeldeshell in / etc / passwd festgelegt. (Du könntest es dort auch)

mrossi
quelle
Es wird dann schwierig, mit Ihrem Konto etwas anderes zu tun als sich einzuloggen. Außerdem verfügt Ihr Sysadmin wahrscheinlich nicht über einen Bildschirm in / etc / shells. Siehe auch die akzeptierte Antwort.
Wfaulk