Привет, всем, ага. С утра разминочка, а ближе к обеду про более серьезные вещи поговорим.

Наверняка ты знаешь, что при нажатии сочетания клавиш CTRL+D завершится текущая интерактивная оболочка. То есть если ты сидишь на сервере по ssh и нажал CTRL+D, сессия прервется. ОК.

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

Как еще можно завершить сессию с командной оболочкой? Ну например установить значение переменной TMOUT больше нуля.

Цифра будет означать секунды.

# TMOUT=5

Текущая сессия закроется через 5 секунд.

Следующий вариант это активировать параметр оболочки «t» с помощью команды

set.

set -t

Выбросило! НО! Оболочка прекратит свою работу, только после того, как завершится работа запущенных команд в текущей строке. Например:

set -t ; read

Выход произойдет, только после нажатия клавиши Enter. А в примере ниже:

set -t ; read -t3

Выход будет произведен после нажатия Enter ИЛИ

по прошествии 3х секунд.

Так. Еще есть вариант с параметром «e». Указав его оболочка завершает работу после возникновения ошибки. Например:

set -e ; false

Команда false ничего не делает, но завершается всегда с ошибкой. Как правило, используется при написании Bash-скриптов.

Более человеческий пример:

set -e ; Паравозблять

И снова выкинуло. Потому что вернулась ошибка -

Паравозблять: command not found.

Что еще упустили… Упустили команду exec. Подвешиваем на стандартный ввод устройство

/dev/null.

exec </dev/null

При чтении этого устройства оболочка получит признак конца файла и успешно завершится.

Ааа, еще же exit есть. Не буду его обижать, пусть тоже в этом посте присутствует.

Ну и как обычно, на закуску.

stty eof $'\t'
Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Ёпта, что это? Это хак. После выполнения этой команды у тебя появится возможность закрыть текущую оболочку по нажатию на клавишу TAB. Ввод символа табуляции, посылает сигнал конца файла и оболочка прекращает свою работу.

stty (Set Teletype) - Эта команда управляет настройками терминала и позволяет пользователю вносить изменения в терминал и отображать его характеристики.

Всё, стоп! После обеда покажу, как с помощью strace можно инжектить в системные вызовы процессов для отладки некоторых ёбнутых случаев. Увидимся!