Domyślną powłoką dla root
systemu OS X jest /bin/sh
. Jest sh
to również wersja bash
, ale po wywołaniu z nazwą sh
Bash :
stara się naśladować zachowanie startowe historycznych wersji sh
tak 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 --login
opcji, to pierwsze próby odczytu i wykonywania poleceń /etc/profile
i ~/.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 .profile
zamiast tego użyć lub nawet dowiązać symbolicznie do siebie. Jeśli uruchomisz powłokę logowania za pomocą su -l
, .profile
zostanie załadowany podczas uruchamiania, ale .bash_profile
nigdy 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 su
wywołania w celu wymuszenia bash
natychmiastowego 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.