Wie übergibt das OS X-Terminal das Verzeichnis der neuen Registerkarte an die Anmeldung oder Bash?

Wie übergibt das OS X-Terminal das Verzeichnis der neuen Registerkarte an die Anmeldung oder Bash?

In OS X können Sie eine Shell zu /etc/shells hinzufügen und sie als Standard-Shell eines Benutzers festlegen, sodass ihm beim Öffnen des Terminals diese Shell angezeigt wird. Darüber hinaus haben Sie die Möglichkeit, alle neuen Terminal-Tabs im selben Verzeichnis wie den aktuell fokussierten Tab zu öffnen. Dies wird erreicht, indem das Passwort über eine in die Eingabeaufforderung eingebettete Funktion an die Terminal-App gesendet wird und der neue Tab diese Informationen an login oder bash weitergibt. Meine Frage ist, wie diese Informationen an login oder bash weitergegeben werden, als Argumente? Umgebungsvariable?

Ich möchte das wissen, weil die mit OS X mitgelieferten Shells nicht anzeigen, dass cd /path/to/last/dirdies der erste ausgeführte Befehl ist, wenn Sie eine Registerkarte öffnen (mit den gewünschten Verzeichniseinstellungen), während Sie eine Shell verwenden, die nicht mit OS X mitgeliefert wird (z. B. eine moderne Bash). Und ich würde gerne eine Möglichkeit finden, dies in meinem Setup zu replizieren.

Auf dem Terminal /usr/local/bin/bash --noediting -iläuft eines und auf jeder Registerkarte wird Folgendes ausgeführt:

login -pf camdennarzt -bash

und wenn Sie eine Shell verwenden, die nicht mit OS X mitgeliefert wird, wird der erste Befehl ausgeführt, cd /path/to/last/dirallerdings in einer Eingabeaufforderung, als ob der Befehl eingegeben worden wäre. Und wenn Sie eine integrierte Shell verwenden, wird das Verzeichnis zwar trotzdem geändert, aber der entsprechende Befehl wird nicht angezeigt.

/etc/bashrc_Apple_Terminalscheint damit zusammenzuhängen.

In Sierra wird angezeigt, dass die Shell wie folgt gestartet wird: login -pfl camdennarzt /bin/bash -c 'exec -la bash /usr/local/bin/bash'und das Problem ist behoben, es könnte also damit zusammenhängen.

verwandte Informationen