Я только что заметил, что в OS X 10.6.4 оболочка root установлена в /bin/sh
. Есть проблема безопасности или что-то с запуском Bash?
4 ответа
Ubuntu использует dash в качестве системной оболочки по умолчанию для скорости вместо sh. Я думаю, если это действительно sh, то, вероятно, это та же причина.
Здесь есть веские причины, по которым bash на самом деле не лучший выбор в качестве системной оболочки по умолчанию: https://wiki.ubuntu.com/DashAsBinSh
Разве не /bin /sh Bash?
Сделайте 'ls -lisa' в /bin. Затем выполните «./sh -version» в каталоге, и sh идентифицирует себя как GNU bash.
Я считаю, что по соображениям совместимости с Unix корневой оболочкой по умолчанию является /bin /sh.
Смотрите http://en.wikipedia.org/wiki/Bourne_shell
В какой-то момент /bin /sh был оболочкой zsh, я считаю. Apple изменила его на bash, потому что zsh не был POSIX-совместимым или каким-то другим.
РЕДАКТИРОВАТЬ:
Исходный код Makefile, показывающий, что /bin /sh создан из исходного кода bash.
РЕДАКТИРОВАТЬ № 2:
Скучно, я проверил. Похоже, что Mac OS X 10.1.5 была последней версией, которая использовала zsh для /bin /sh. Это было изменено на Bash в 10.2.
Установка логина / интерактивной оболочки root в /bin/bash
не влияет на сценарии оболочки, которые имеют #!/bin/sh
как их линия Шебанга. Для этих сценариев любой файл действует как /bin/sh
будь то автономный исполняемый файл, символическая или жесткая ссылка будет использоваться для интерпретации этого сценария. Аналогично для сценариев запускаются из командной строки следующим образом: sh script
.
Вполне нормально установить для интерактивной оболочки пользователя root значение /bin /bash.