2

Подобно посту о cd , я перезаписал exit чтобы сделать следующее:

function exit() { $HOME/script.sh && builtin exit "$@"; }

Хотя это работает, как и ожидалось, при непосредственном вызове exit , когда оболочка закрывается через CTRL-D, она не выполняется, ИЛИ, если она все-таки выполняется, скрипт не может завершиться.

Что дает? Вызывается ли какой-либо другой метод, кроме exit когда используется CTRL-D?

2 ответа2

6

Когда вы нажимаете Ctrl+D, вы действительно говорите bash как EOF (конец файла). Таким образом, оболочка просто завершается, потому что больше нет ввода для чтения. Если вы хотите выполнить действия при выходе, используйте ловушку:

trap "~/script.sh" exit

Используя ловушку "выхода", вы можете выполнять любые команды оболочки непосредственно перед выходом из оболочки, и не имеет значения, была ли оболочка завершена при exit или при помощи Ctrl+D.

0

Со страницы руководства bash: «При выходе из оболочки входа в систему bash читает и выполняет команды из файла ~/.bash_logout, если он существует».

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