1

bashrc был написан не мной, а содержит множество различных конфигурационных файлов. После его получения я больше не могу выходить из bash с помощью Ctrl+D.

Я нашел этот связанный вопрос о Zsh, и я хотел бы знать механизм, используемый для того же сделать с Bash.

При вводе Ctrl+D в оболочке входа в систему я получаю:

Используйте "выход", чтобы покинуть оболочку.

Когда в оболочке не для входа в систему,

Используйте "выход", чтобы покинуть оболочку.

Поскольку эти сообщения переводятся в зависимости от используемой локали, это, вероятно, не системный скрипт. Я хотел бы контролировать оба независимо, если это возможно (отключите эту функцию, например, для оболочек без входа в систему). Это возможно?

1 ответ1

3

Посмотрите на вашу конфигурацию, если установлены переменные bash или параметры оболочки:

Переменные Bash

(Раздел 5.2 в Справочном руководстве Bash)

IGNOREEOF

Управляет действием оболочки при получении символа EOF в качестве единственного ввода. Если установлено, значение обозначает количество последовательных символов EOF, которые могут быть прочитаны как первый символ в строке ввода до выхода из оболочки. Если переменная существует, но не имеет числового значения (или не имеет значения), по умолчанию используется значение 10. Если переменная не существует, EOF обозначает конец ввода в оболочку. Это действует только для интерактивных оболочек.

Например IGNOREEOF=2


Модификация поведения оболочки: встроенный набор

set позволяет изменять значения параметров оболочки

(Раздел 4.3.1 в Справочном руководстве Bash)

-o ignoreeof

Интерактивная оболочка не завершится после чтения EOF.


Как добраться до вашего вопроса

Я хотел бы контролировать оба независимо, если это возможно (отключите эту функцию, например, для оболочек без входа в систему). Это возможно?

Да. Сценарии, которые вы используете, должны проверить, является ли оболочка оболочкой входа в систему, и соответственно установить переменную, примерно так:

if shopt -q login_shell; then IGNOREEOF=10; else IGNOREEOF=0; fi

Обратите внимание, что значение 10 прежнему позволяет вам покинуть оболочку с помощью Ctrl+D ; вам просто нужно 11 последовательных ударов этого.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .