通过 CTRL-D 退出 bash 时执行什么方法?

通过 CTRL-D 退出 bash 时执行什么方法?

类似于邮政关于cd,我已覆盖exit以执行以下操作:

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

尽管exit直接调用时它可以按预期工作,但是当通过 CTRL-D 退出 shell 时,它不会执行,或者,如果它确实执行,脚本也无法完成。

发生了什么?除了exit使用 CTRL-D 时调用的方法外,还有其他方法吗?

答案1

当您按下Ctrl+时D,您实际上对 bash 说的是EOF(文件结束)。因此,shell 只是终止,因为没有更多输入可读取。如果您想在退出时执行操作,请使用陷阱:

trap "~/script.sh" exit

使用“exit”陷阱,你可以执行任何 shell 命令就在之前exitshell 退出,并且 shell 是通过还是通过Ctrl+ 终止并不重要D

答案2

来自 bash 手册页:“当登录 shell 退出时,bash 将从文件 ~/.bash_logout 读取并执行命令(如果存在)。”

相关内容