Оболонка за замовчуванням для root
OS X є /bin/sh
. Це sh
також версія bash
, але при посиланні на ім'я sh
Bash :
намагається імітувати поведінку при запуску історичних версій sh
якомога ближче, одночасно відповідаючи стандарту POSIX.
Коли викликається як інтерактивна оболонка для входу, або як неінтерактивна оболонка з --login
можливістю, вона спочатку намагається прочитати та виконати команди з /etc/profile
та ~/.profile
в цьому порядку. ... оболонка, що викликається, як sh не намагається читати та виконувати команди з будь-яких інших файлів запуску
Тобто, він взагалі не читається .bash_profile
, незалежно від того, викликали його як оболонку входу чи ні . Ви можете використовувати .profile
натомість або навіть символізувати одне до іншого. Якщо ви запускаєте оболонку для входу з su -l
, .profile
завантажується при запуску, але .bash_profile
ніколи не буде.
Ви можете також використовуватиdscl
для зміни оболонки суперкористувача (зауважимо , що /etc/passwd
це НЕ використовується для визначення оболонки на OS X). Ви можете перевірити поточну оболонку кореня за допомогою dscl . -read /Users/root UserShell
; проконсультуйтеся з документацією і ретельно подумайте, перш ніж змінити її на щось інше.
Інший підхід - просто змінити su
виклик, щоб примусити його bash
негайно виконувати .
З огляду на те, що ви сказали, я, мабуть, рекомендую посилання, але ви, можливо, захочете вивчити зміни, які вносить режим POSIX Баша, і вирішити, хочете ви їх мати чи ні.