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

bos*_*ter 5 bash

类似岗位cd,我已经覆盖exit到做到以下几点:

function exit() { $HOME/script.sh && builtin exit "$@"; }
Run Code Online (Sandbox Code Playgroud)

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

是什么赋予了?exit使用 CTRL-D 时是否调用了其他方法?

Ste*_*del 10

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

trap "~/script.sh" exit
Run Code Online (Sandbox Code Playgroud)

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