关闭终端时执行脚本

关闭终端时执行脚本

我想在关闭终端时执行特定的 sh 脚本。

我编辑了该.bash-logout文件,在 if 语句中添加了这行代码

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

我制作了logout_msg.sh可执行文件,并且在 if 语句之外我添加了带有 sleep 命令的基本回显消息,但是关闭终端时并未显示该消息。

可能存在什么问题?

答案1

~/.bash_logout文件仅来源当您退出登录 shell 时(从man bash):

当交互式登录 shell 退出,或者非交互式登录 shell 执行 exit 内置命令时,bash 会从文件 ~/.bash_logout 中读取并执行命令(如果存在)。

当你打开终端时,你正在运行一个交互式非登录 shell,因此~/.bash_logout不相关。有关不同类型的 shell 的更多信息,请参阅我的答案在这里

为了每次关闭终端时都执行某些操作,您可以使用trap设置命令,使其在每次退出交互式 bash 会话时运行。为此,请将此行添加到您的~/.bashrc

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

当然,如果该脚本正在向终端打印一条消息,您需要确保logout_msg.sh包含一个sleep命令,以便用户有时间阅读该消息。例如:

echo "Whatever message you want"
sleep 10 ## wait for 10 seconds

相关内容