Mac Gnu-Screen lädt das Standard-Bash-Profil nicht

14

Ich habe eine Reihe von benutzerdefinierten Einstellungen in meinem bash_profile. als ich gnu-screen benutze, ist mir aufgefallen, dass meine bildschirme nicht funktionieren source /Users/disappearedng/.bash_profile. Ich versuche, die Quelle /Users/disappearedng/.bash_profile in meine .screenrc-Datei einzufügen, aber dann beschwert es sich, dass der Alias ​​kein Befehl ist ... (Ich vermute, dass screenrc einen screenrc-spezifischen Befehl benötigt).

Ich habe versucht, mein .bash_profile in .profile oder .bash_rc zu ändern. Nichts davon.

Irgendeine Hilfe?

verschwunden
quelle

Antworten:

17

Die .bash_profile-Datei (und auch die .profile-Datei) wird für Anmeldeshells geladen, Nicht-Anmeldeshells verwenden .bashrc (kein _-Symbol). In der .screenrc-Datei befindet sich eine Zeile, die dem Bildschirm mitteilt, welche Shell beim Starten eines Bildschirmfensters erzeugt werden soll (wenn ein bestimmtes Programm nicht als Fensteranwendung gestartet wird). In meiner .screenrc-Datei ist dies so (einschließlich Kommentaren):

# shell:  Default process started in screen's windows.
# Makes it possible to use a different shell inside screen
# than is set as the default login shell.
# If begins with a '-' character, the shell will be started as a login shell.
  shell -$SHELL

Überprüfen Sie Ihre .screenrc-Datei und stellen Sie sicher, dass die Shell-Linie den Bindestrich vor sich hat. Wenn Sie dieses Bindestrichsymbol haben und eine Anmeldeshell erzwingen, erhalten Sie Ihre .bash_profile-Quelle. Die Variable $ SHELL in meinem .screenrc verwendet den Shell-Wert, der von der Shell bereitgestellt wird, die screen startet (normalerweise ist es bash).

Falls Sie sich fragen, ist der größte Unterschied, den ich zwischen Anmelde- und Nicht-Anmelde-Shells feststellen konnte, dass normalerweise eine Nicht-Anmelde-Shell zum Ausführen von Skripten aufgerufen wird.

Matrix Mole
quelle
Ah danke! Gibt es eine Möglichkeit, mich einfach darüber zu informieren, dass sich dieses aktuelle Fenster im Gnu-Bildschirm befindet?
Verschwunden
Die Option "hardstatus" in der Datei ".screenrc" kann verwendet werden, um sicherzustellen, dass Sie erkennen können, dass Sie sich auf dem Bildschirm befinden (und auch einige andere nützliche Einstellungen, die ich verstehe). Die Bildschirm-Manpage sollte die Details zur Konfiguration enthalten (ich kenne sie nicht ganz genau).
Matrix Mole
2

Die Beschaffung .bash_profileunterscheidet sich von der Mac-Terminal-App, die die meisten Terminal-Apps nicht bieten. Der Bildschirm liest sich ~/.bashrcjedoch jedes Mal, wenn Sie eine neue Shell erstellen.

Wenn Sie Ihre umbenennen ~/.bash_profile in~/.bashrc (ohne Unterstreichung zwischen Bash und RC, wie in Ihrer Frage), wird er als Quelle verwendet.

Meine bevorzugte Strategie ist es jedoch, alle meine Einstellungen in das zu setzen bashrcund sie dann bash_profilewie folgt zu extrahieren :

[ -f .bashrc ] && . .bashrc
Freedom_Ben
quelle
-1

Sie brauchen keine Konfigurationsdatei zu ändern, wenn Sie alle Ihre Einstellungen auf schreiben .bash_profile, wie Sie es normalerweise tun, um Ihr Terminal einzurichten, und einen Link mit dem Namen erstellen .bashrc, der auf Ihre .bash_profilefür die Bildschirmsitzungen verweist :

$ ln -s ~/.bash_profile ~/.bashrc

Alle Änderungen, die an einer der Dateien vorgenommen werden, werden in gespeichert, sind .bash_profilejedoch auch für zugänglich.bashrc .

Der einzige Nachteil ist, dass Sie nicht nur einer der Konfigurationsdateien Einstellungen hinzufügen können.

Schärfe
quelle
Können Sie diese Antwort etwas näher erläutern? Sie haben nicht wirklich erklärt, wie dies das Problem lösen würde.
bwDraco
-1

Die Linux-Anmeldung schält Quell-Nicht-Anmeldedateien, indem bei Benutzerdateien die folgende Zeile hinzugefügt wird:

[[ -f ~/.bashrc ]] && . ~/.bashrc
FreeFog
quelle
Diese Lösung wurde bereits gebucht.
Slhck
Es scheint auch rückwärts zu sein.
G-Man sagt, dass Monica