Emacs und / etc / profile unter OS X

1889
Pinochle

Wenn ich M-x shellin Emacs.app eine Shell ( ) starte, liest die erzeugte Shell während der Initialisierung nicht (oder genauer gesagt source) /etc/profile(ich habe viele Shell-Anpassungen dort).

Ich habe die Pfadvariable in ~ / .MacOSX / environment.plist gesetzt, da Emacs.app $ PATH lesen muss. Ich habe also eine der notwendigen Anpassungen vorgenommen, um Emacs an OS X anzupassen. Dies ist jedoch nicht der Fall scheinen etwas mit der PATH-Variable zu tun zu haben, sondern haben eher mit der Initialisierung der Shell selbst zu tun.

1

1 Antwort auf die Frage

3
Pinochle

Ok, ich habe das Problem gelöst. Es basiert auf einer Antwort auf diese Frage von StackOverflow, die ich gefunden habe, nachdem ich meine Suchbegriffe etwas bei Google gemischt hatte. Ich habe folgende Zeile hinzugefügt .bashrc:

source /etc/profile 

Jetzt funktioniert alles wie es soll.

BEARBEITEN: Warum das Problem auftritt

Ich habe herausgefunden, warum Sie die BASH- Shell explizit zwingen müssen, / etc / profile zu lesen, anstatt sie beim Aufruf lesen zu lassen. Hier ist der relevante Abschnitt aus dem BASH- Handbuch ( man bash):

Wenn eine interaktive Shell gestartet wird, die keine Login-Shell ist, liest und führt bash Befehle aus ˜ / .bashrc aus, sofern diese Datei vorhanden ist. Dies kann durch Verwendung der Option –norc verhindert werden . Die --rc fi le fi le Option zwingt Bash Befehle aus zu lesen und auszuführen fi le statt ~ / .bashrc .

Aus der Art und Weise, wie dies geschrieben wird (und was darüber gesagt wird, wie Login-Shells zuvor aufgerufen werden), kann man daraus schließen, dass shell.elkeine Login-Shell aufgerufen wird. Ich habe nach Beweisen dafür gesucht shell.elund es scheint wahr zu sein, BASH wird mit der -i- Flag (interaktiv) aufgerufen, nicht aber mit der --login- Flag. Nicht-Login-Shells lesen .bashrc . Aus diesem Grund können Sie das Problem umgehen, indem Sie es source /etc/profilein .bashrc einfügen .

tolles Zeug, es hat meine .bashrc wieder zum Laufen gebracht. Dan Rosenstark vor 14 Jahren 0