выполните сценарий когда заключительный терминал

Я хочу выполнить определенный sh сценарий при закрытии терминала.

Я отредактировал .bash-logout файл, добавила эта строка кода внутри если оператор

[ -x /home/user/Documents/logout_msg.sh ] && /home/user/Documents/logout_msg

Я сделал logout_msg.sh исполняемый файл, и также за пределами того, если оператор я добавил основное сообщение эха с командой сна после, но это не показывает при закрытии терминала.

Какова могла бы быть проблема?

4
задан 4 April 2018 в 18:54

1 ответ

~/bash_logout файл только получен при выходе из оболочки входа в систему (от man bash):

Когда интерактивная оболочка входа в систему выходит, или неинтерактивная оболочка входа в систему выполняет выход встроенная команда, удар читает и выполняет команды из файла ~/.bash_logout, если это существует.

При открытии терминала Вы выполняете интерактивную оболочку невхода в систему, таким образом, ~/bash_logout не релевантно. Для больше на различных типах оболочки, см. мой ответ здесь.

Чтобы иметь что-то, выполнился каждый раз, когда Вы закрываете терминал, Вы могли использовать trap для установки команды для выполнения каждый раз, интерактивная сессия удара выходит. Чтобы сделать это, добавьте эту строку к Вашему ~/.bashrc:

trap /home/user/Documents/logout_msg.sh EXIT 

Конечно, если тот сценарий печатает сообщение к терминалу, необходимо удостовериться Ваш logout_msg.sh включает a sleep управляйте, таким образом, у пользователя будет время для чтения сообщения. Что-то как:

echo "Whatever message you want"
sleep 10 ## wait for 10 seconds
4
ответ дан 1 December 2019 в 09:44

Другие вопросы по тегам:

Похожие вопросы: