'должностное лицо/bin/bash-il' перестало работать в .profile

В странице справочника Bash говорится:

После чтения того файла (/etc/profile), это ищет ~/.bash_profile, ~/.bash_login и ~/.profile, в том порядке, и читает и выполняет команды от первой, которая существует и читаема.

Таким образом, если у меня есть оба a ~/.bash_profile и a ~/.profile, только первое будет выполнено.

Поскольку я часто совместно использую ДОМ между различными системами, у меня есть оба, трудно связанные. На 18.04.2 вход в систему возвращается к экрану входа в систему. С каждым как отдельный, но идентичный файл происходит то же. Совместно использовать между системами и доступными оболочками мой .profile содержит a case оператор на основе $0, установка как соответствующая или выполнение предпочтительной оболочки. Эффективно это делает:

case $0 in
*bash) ... some stuff ...
;;
*) exec /bin/bash -il
;;
esac

Помещение a # перед exec в .profile копия и все работы хорошо...

.bash_profile идентично (кроме # в .profile когда я вставляю один).

Оказывается, что 18.04.2 довольно довольно этим exec в ~/.bash_profile, но не в ~/.profile (который это не должно читать так или иначе). Когда это там, вход в систему берет пароль → черный экран кратко → окно входа в систему снова. Когда это комментируется, вход в систему происходит правильно. Также оболочка является Bash, так, чтобы ответвление случая не должно было быть взято также.

Мысли?

1
задан 27 February 2019 в 10:15

1 ответ

Процесс входа в систему GUI может получить /etc/profile и ~/.profile для установки переменных среды, и т.д., и это может использовать /bin/dash или /bin/bash для этого. Попросите, чтобы Ubuntu имела много экземпляров входа в систему GUI, переставшего работать из-за ошибок в ~/.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
1
ответ дан 7 December 2019 в 15:07

Другие вопросы по тегам:

Похожие вопросы: