O shell padrão para root
no OS X é /bin/sh
. Seu sh
também é uma versão de bash
, mas quando invocado com o nome sh
Bash :
tries to mimic the startup behavior of historical versions of
sh
as closely as possible, while conforming to the POSIX standard as well.When invoked as an interactive login shell, or as a non-interactive shell with the
--login
option, it first attempts to read and execute commands from/etc/profile
and~/.profile
, in that order. ... a shell invoked as sh does not attempt to read and execute commands from any other startup files
Ou seja, ele não lê .bash_profile
, , independentemente de ter sido chamado como um shell de login ou não . Você pode usar .profile
, ou até mesmo ligar um para o outro. Se você iniciar um shell de login com su -l
, .profile
será carregado na inicialização, mas .bash_profile
nunca será.
Você também pode usar dscl
para alterar o shell do root (observando que /etc/passwd
é não usado para determinar o shell no OS X). Você pode verificar o shell atual do root com dscl . -read /Users/root UserShell
; consulte a documentação e pense cuidadosamente antes de alterá-la para outra coisa.
Outra abordagem é simplesmente alterar sua invocação de su
para forçar a execução de bash
imediatamente.
Dado o que você disse, eu provavelmente recomendaria o symlink, mas você pode querer examinar as mudanças que o Bash's modo POSIX faz e decide se você quer tê-los ou não.