Wie kann ich den GNU-Bildschirm anweisen, .bash_profile in jedem neuen Fenster auszuführen?

18

Wenn ich in GNU ein neues Fenster öffne, läuft es .bashrcaber nicht .bash_profile. In meinem Setup führt dies dazu, dass einige Umgebungsvariablen in diesem Fenster nicht richtig eingerichtet werden.

Wie kann ich festlegen, dass der GNU-Bildschirm immer ausgeführt wird, .bash_profileanstatt .bashrcein neues Fenster zu öffnen? (Bitte sag mir nicht, ich soll nur .bash_profilevon meinem anrufen .bashrc:)

user9474
quelle

Antworten:

33

Sie möchten bash (oder eine beliebige Shell) als Login-Shell starten. Das machst du mit

shell -$SHELL

in deinem ~/.screenrc. Die Magie ist die -vor der Muschel. Siehe man screenrcfür weitere Einzelheiten. (Naja, nicht viel mehr Details, weil das so ziemlich alles ist.)

mattdm
quelle
1
Wenn ich das tue, stoppt es den Bildschirm, der in dem Verzeichnis beginnt, in dem ich den Befehl verwende. Wie kann ich festlegen, dass der Bildschirm das Verzeichnis verwendet, von dem aus ich den Befehl starte, als das Verzeichnis, in dem er gestartet wird?
theonlygusti
Ich verstehe diese Manpage nicht! Die Online-Dokumentation finden Sie hier: gnu.org/software/screen/manual/screen.html#Shell . Ich war anfangs verwirrt, da der screenrc nur dann erneut gelesen wird, wenn ein Bildschirm neu erstellt wird - nicht jedes Mal, wenn Sie ein neues Fenster in der Anwendung
erstellen
@theonlygusti Für mich bleibt das Arbeitsverzeichnis beim Einrichten von .screenrc wie vorgeschlagen erhalten.
Holger Brandl
2

Sie würden entweder Quelle müssen ~/.bash_profileaus ~/.bashrcoder die Dinge , die Sie in Not direkt setzen ~/.bashrcoder die Dinge gemeinsam in einer dritten Datei setzen und Quelle sie sowohl von Ihrem ~/.bashrcund ~/.bash_profile.

Bis auf weiteres angehalten.
quelle
WOher diese beziehen? ... denn das ist das Problem (Bildschirm keine von ihnen Quelle)
TheSorcerer
@THESorcerer: Auf meinem System werden screenQuellen ~/.bashrcohne den shellBefehl in der anderen Antwort angezeigt.
Bis auf weiteres angehalten.