Когда вы входите в систему, файл ~/.profileчитается оболочкой входа (ksh для вас). Вы можете указать этой оболочке входа в систему заменить себя на bash. Вы должны принять некоторые меры предосторожности:
- Замените оболочку входа только в том случае, если она интерактивная. Это важно: в противном случае вход в систему в графическом режиме может не работать (это зависит от системы: некоторые, но не все системы читают
~/.profileпри входе в систему через xdm или аналогичный), и такие идиомы, как, ssh foo '. ~/.profile; mycommand'могут быть неудачными.
- Убедитесь, что bash доступен, чтобы вы могли войти в систему, если исполняемый файл по какой-то причине отсутствует.
У вас есть выбор: запускать bash в качестве оболочки для входа или нет. Единственное существенное отличие от создания оболочки для входа - это то, что она загружается ~/.bash_profileили ~/.profile. Поэтому, если вы запускаете bash в качестве оболочки входа в систему, будьте очень осторожны, чтобы иметь ~/.bash_profileили избегать рекурсивного выполнения bash из ~/.profile. Нет реального преимущества в ~/.profileвыполнении bash, а не в ksh, поэтому я бы рекомендовал не делать этого.
Также установите SHELLпеременную окружения на bash, чтобы такие программы, как эмуляторы терминала, вызывали эту оболочку.
Вот код для переключения на bash. Поместите это в конце ~/.profile.
case $- in
*i*)
# Interactive session. Try switching to bash.
if [ -z "$BASH" ]; then # do nothing if running under bash already
bash=$(command -v bash)
if [ -x "$bash" ]; then
export SHELL="$bash"
exec "$bash"
fi
fi
esac