Die Standard-Shell für root
OS X ist /bin/sh
. Es sh
ist auch eine Version von bash
, aber wenn es mit dem Namen sh
Bash aufgerufen wird :
versucht, das Startverhalten historischer Versionen sh
so 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 --login
Option 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 .profile
stattdessen verwenden oder sogar miteinander verknüpfen. Wenn Sie eine Login-Shell mit starten su -l
, .profile
wird diese beim Start geladen, wird es aber .bash_profile
nie sein.
Sie können auch verwendendscl
( unter Hinweis darauf , dass root Shell zu ändern /etc/passwd
ist 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 su
Aufruf zu ändern , um die bash
sofortige 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.