Die Standard-Shell für rootOS X ist /bin/sh. Es shist auch eine Version von bash, aber wenn es mit dem Namen shBash aufgerufen wird :
versucht, das Startverhalten historischer Versionen shso genau wie möglich nachzuahmen und dabei auch dem POSIX-Standard zu entsprechen.
Beim Aufruf als interaktive Anmeldeshell oder als nicht interaktive Shell mit der --loginOption wird zunächst versucht , Befehle von und in dieser Reihenfolge zu lesen und auszuführen . ... eine als sh aufgerufene Shell versucht nicht, Befehle aus anderen Startdateien zu lesen und auszuführen/etc/profile~/.profile
Das heißt, es wird überhaupt nicht gelesen .bash_profile, unabhängig davon, ob es als Anmeldeshell aufgerufen wurde oder nicht . Sie können .profilestattdessen verwenden oder sogar miteinander verknüpfen. Wenn Sie eine Login-Shell mit starten su -l, .profilewird diese beim Start geladen, wird es aber .bash_profilenie sein.
Sie können auch verwendendscl ( unter Hinweis darauf , dass root Shell zu ändern /etc/passwdist nicht die Shell auf OS X verwendet , um zu bestimmen). Sie können die aktuelle Shell von root mit überprüfen dscl . -read /Users/root UserShell. Konsultieren Sie die Dokumentation und überlegen Sie sorgfältig, bevor Sie sie in etwas anderes ändern.
Ein anderer Ansatz besteht einfach darin, Ihren suAufruf zu ändern , um die bashsofortige Ausführung zu erzwingen .
In Anbetracht dessen, was Sie gesagt haben, würde ich den Symlink wahrscheinlich empfehlen, aber Sie möchten vielleicht die Änderungen im POSIX-Modus von Bash untersuchen und entscheiden, ob Sie sie haben möchten oder nicht.