![关闭终端时执行脚本](https://linux22.com/image/1155042/%E5%85%B3%E9%97%AD%E7%BB%88%E7%AB%AF%E6%97%B6%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC.png)
我想在关闭终端时执行特定的 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