Вам придется посмотреть исходный код, чтобы узнать, почему программа зависает. Он также может прерываться или давать сбой или игнорировать проблему :
.bash -c 'exec >&-; echo foo; echo bar >&2'
bash: line 0: echo: write error: Bad file descriptor
bar
Этот шелл-код игнорирует проблему.
bash -c 'set -e; exec >&-; echo foo; echo bar >&2'
bash: line 0: echo: write error: Bad file descriptor
Этот шелл-код прерывается из-за ошибки.
Может произойти зависание, если есть какая-то функция ведения журнала с циклом «повторять до тех пор, пока он не будет успешно зарегистрирован». Этого никогда не происходит, потому что запись в файловый дескриптор 1 завершается ошибкой, поэтому программа попадает в бесконечный цикл.
Вы можете добавить set -x
в начало /etc/profile
, чтобы оболочка отображала каждую команду, которую она собирается выполнить, со всеми расширениями переменных и т. д., уже развернутыми, так что вы увидите, что на самом деле делает оболочка..
Но если вы говорите о входе в систему с графическим интерфейсом, сначала убедитесь, что ваша файловая система не заполнена на 100% :создание сеанса графического интерфейса требует создания нескольких небольших файлов, и если файловая система полностью заполнена, это не удастся. Базовая команда -строка входа в систему (, например. через SSH или в текстовой консоли режима -)должно пройти успешно, даже если диск заполнен на 100%.