`exec /bin/bash -il` завершается неудачей в.profile
На странице Bash написано:
После прочтения этого файла (/etc/profile) он ищет ~/.bash_profile, ~/.bash_login и ~/.profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения.
Так что, если у меня есть оба ~/.bash_profile и ~/.profileтолько первый будет запущен.
Потому что я часто разделяю HOME между разными системами, которые у меня жестко связаны. 18.04.2 логин возвращается на экран логина. С каждым отдельным файлом, но идентичным, происходит то же самое. Поделиться между системами и доступными оболочками моего .profile содержит case заявление на основе $0, настраивая соответствующим образом или выполняя предпочтительную оболочку. Эффективно это делает:
case $0 in
*bash) ... some stuff ...
;;
*) exec /bin/bash -il
;;
esac
Положить # перед exec в .profile копируй и все хорошо работает...
.bash_profile идентичен (кроме # в .profile когда я вставлю один).
Оказывается, 18.04.2 вполне доволен этим exec в ~/.bash_profile, но не в ~/.profile (который он не должен читать в любом случае). Когда это происходит, для входа требуется пароль → черный экран → окно входа снова. Когда это закомментировано, вход происходит правильно. Также оболочкой является Bash, так что ветвь кейса также не должна приниматься.
Мысли?
1 ответ
Процесс входа в систему GUI может исходить /etc/profile а также ~/.profile для настройки переменных среды и т. д., и он может использовать /bin/dash или же /bin/bash для этого. Спросите Ubuntu имеет много случаев неудачного входа в систему из-за ошибок в ~/.profile или же /etc/profile, Ты не должен быть execчто-то еще в этих файлах, по крайней мере, без проверки на интерактивное использование. Например, по умолчанию .bashrc имеет это наверху, которое вы могли бы адаптировать:
~ head /etc/skel/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac