
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/dir
dies 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 -i
lä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/dir
allerdings 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_Terminal
scheint 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.