Когда вы входите в систему, файл ~/.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