Domyślną powłoką dla rootsystemu OS X jest /bin/sh. Jest shto również wersja bash, ale po wywołaniu z nazwą shBash :
stara się naśladować zachowanie startowe historycznych wersji shtak dokładnie, jak to możliwe, przy jednoczesnym zachowaniu zgodności ze standardem POSIX.
Wywołany jako interaktywną powłokę logowania lub jako non-interaktywnej powłoki z --loginopcji, to pierwsze próby odczytu i wykonywania poleceń /etc/profilei ~/.profile, w tej kolejności. ... powłoka wywołana, ponieważ sh nie próbuje czytać i wykonywać poleceń z innych plików startowych
Oznacza to, że w ogóle nie czyta .bash_profile, niezależnie od tego, czy została wywołana jako powłoka logowania, czy nie . Możesz .profilezamiast tego użyć lub nawet dowiązać symbolicznie do siebie. Jeśli uruchomisz powłokę logowania za pomocą su -l, .profilezostanie załadowany podczas uruchamiania, ale .bash_profilenigdy nie będzie.
Możesz także użyćdscl do zmiany powłoki roota (zauważając, że nie/etc/passwd jest ona używana do określenia powłoki w OS X). Możesz sprawdzić bieżącą powłokę roota za pomocą dscl . -read /Users/root UserShell; zapoznaj się z dokumentacją i przemyśl dokładnie, zanim zmienisz ją na coś innego.
Innym podejściem jest po prostu zmiana suwywołania w celu wymuszenia bashnatychmiastowego wykonania .
Biorąc pod uwagę to, co powiedziałeś, prawdopodobnie poleciłbym dowiązanie symboliczne, ale możesz przyjrzeć się zmianom, które wprowadził Bash tryb POSIX i zdecydować, czy chcesz je mieć, czy nie.