Код, который вы показываете, вполне может быть использован для запуска оболочки входа bash
из вашего файла ~/.profile
. Лично я бы использовал command
для обнаружения присутствия bash
вот так:
if [ -z "$BASH" ]; then
shell=$( command -v bash )
if [ -n "$shell" ]; then
exec env SHELL="$shell" bash --login
fi
unset shell
echo 'Bash not present, continuing...' >&2
fi
Получает путь к bash
в $shell
, который затем используется для проверки доступности bash
и для установки переменной окружения SHELL
для bash
.
Использование [ ! -n "$BASH" ]
или [ -z "$BASH" ]
не имеет особого значения (, поэтому делайте то, что кажется правильным и наиболее простым для чтения ), но я бы, вероятно, не использовал ! [ "$BASH" ]
или [ ! "$BASH" ]
. В общем случае вы можете проверить строки, начинающиеся с тире, что может запутать тест, поэтому лучше придерживаться -n
или -z
при проверке того, являются ли строки пустыми или нет.
Вы также можете оставить ~/.profile
практически нетронутым (, за исключением вышеупомянутого ), если системные администраторы однажды решат удалить bash
и вместо этого написать отдельный ~/.bash_profile
файл. Оболочка bash
будет использовать ~/.bash_profile
, если она доступна, вместо ~/.profile
, а сбой при запуске bash
приведет к тому, что ваша оболочка входа в систему по умолчанию успешно использует ~/.profile
без спотыкания о возможных башизмах.