O shell padrão para root
no OS X é /bin/sh
. Sua sh
também uma versão de bash
, mas quando chamado com o nome sh
Bash :
tenta imitar o comportamento de inicialização de versões históricas o sh
mais próximo possível, além de estar em conformidade com o padrão POSIX.
Quando invocado como um shell de login interativo ou como um shell não interativo com a --login
opção, ele primeiro tenta ler e executar comandos de /etc/profile
e ~/.profile
nessa ordem. ... um shell chamado sh não tenta ler e executar comandos de outros arquivos de inicialização
Ou seja, ele não lê .bash_profile
nada, independentemente de ter sido chamado como um shell de login ou não . Você pode usar .profile
, ou até mesmo vincular um ao outro. Se você iniciar um shell de login com su -l
, .profile
é carregado na inicialização, mas .bash_profile
nunca será.
Você também pode usardscl
para alterar o shell do root (observando que não/etc/passwd
é usado para determinar o shell no OS X). Você pode verificar o shell atual do root com ; consulte a documentação e pense cuidadosamente antes de alterá-la para outra coisa.dscl . -read /Users/root UserShell
Outra abordagem é simplesmente alterar sua su
chamada para forçar a execução bash
imediata.
Dado o que você disse, eu provavelmente recomendaria o link simbólico, mas você pode examinar as alterações feitas pelo modo POSIX do Bash e decidir se deseja tê-las ou não.