Нет никакого стандартного добавления отступа в сценариях оболочки, которое имеет значение.
Немного меньше легкомысленного ответа:
Вы хотите stty
команда: посмотрите, как ^D отображается с stty -a
. Можно изменить это на что-то еще с stty eof char
: Удалите "eof", устанавливающий с stty eof undef
Непротестированный: Вы хотите читать о trap
команда в ksh странице справочника. Это могло бы быть достаточно, чтобы Вы настроили обработчик для EXIT
сигнал.
# warning: completely untested
exit_handler() { echo "exit"; exit; }
trap exit_handler EXIT
Ctrl + D (ASCII EOT
) ) уже находится , отображаемый для выхода из оболочки, в обоих VI
и мод EMACS
Как объясняет KSH93
ручной страницы. Это совсем так, от вашего сценария захвата.
Ручная страница также объясняет, что здесь прокомментировали другие, что этот ключ имеет только этот эффект, если линия пуста. (Это имитирует стандартное поведение линии дисциплины в приготовленном режиме.)
То, что вам не хватает, что также объясняется страницей Ручной, состоит в том, что у вас есть параметр INGLOREEEF
. Таким образом, раковина Корна видела Ctrl + D на пустой линии и проигнорировала его, печатая о том, что вы видите, чтобы объяснить, что с INGLOREEEF
Установите на вас, должны явно использовать команду Exit
.
Так что забудьте о STTY
и обработчиков ловушек, как и в другом ответе; И просто:
set -o noignoreeof
^-
илиundef
как ключ, например.stty eof under
. Это указано в POSIX. – Gilles 'SO- stop being evil' 09.02.2013, 00:41