Le shell par défaut pour root
sous OS X est /bin/sh
. C'est sh
aussi une version de bash
, mais lorsqu'elle est invoquée avec le nom sh
Bash :
tente d'imiter le comportement de démarrage des versions historiques de sh
aussi près que possible, tout en se conformant également à la norme POSIX.
Lorsqu'il est invoqué en tant que shell de connexion interactif, ou en tant que shell non interactif avec l' --login
option, il tente d'abord de lire et d'exécuter des commandes à partir de /etc/profile
et ~/.profile
, dans cet ordre. ... un shell appelé car sh n'essaie pas de lire et d'exécuter des commandes à partir d'autres fichiers de démarrage
Autrement dit, il ne lit pas .bash_profile
du tout, qu'il ait été invoqué ou non comme shell de connexion . Vous pouvez utiliser à la .profile
place, ou même créer un lien symbolique l'un vers l'autre. Si vous lancez un shell de connexion avec su -l
, .profile
est chargé au démarrage, mais .bash_profile
ne le sera jamais.
Vous pouvez également utiliserdscl
pour changer le shell de root (en notant qu'il /etc/passwd
n'est pas utilisé pour déterminer le shell sous OS X). Vous pouvez vérifier le shell actuel de root avec dscl . -read /Users/root UserShell
; consultez la documentation et réfléchissez bien avant de la changer en autre chose.
Une autre approche consiste simplement à modifier votre su
invocation pour forcer l'exécution bash
immédiatement.
Compte tenu de ce que vous avez dit, je recommanderais probablement le lien symbolique, mais vous souhaiterez peut-être examiner les modifications apportées par le mode POSIX de Bash et décider si vous souhaitez les avoir ou non.