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
shas 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
--loginoption, it first attempts to read and execute commands from/etc/profileand~/.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.