我可以使用 Bashexit
命令从窗口捕获命令,但只有当用户在终端窗口中键入时,它才有效。如果用户点击关闭按钮,则不会执行陷阱退出处理程序。gnome-terminal
trap
exit
背景信息:
我想在用户单击“关闭”按钮时将 Bash 历史记录保存到自定义历史记录文件中。我已经使用过export HISTFILE=/tmp/custom.hist
,这在很多情况下都有效(当用户单击 gnome-terminal 中的“关闭”按钮时,历史记录将保存到给定的文件中),但在某些情况下历史记录不会被保存,因此我正在寻找设置HISTFILE
环境变量的替代方法。
答案1
您想捕获SIGHUP;
从man 7 signal
:
SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process
因此,要捕获 SIGHUP 和 EXIT:
trap 'export HISTFILE=/tmp/custom.hist' 1 EXIT
或者:
trap 'export HISTFILE=/tmp/custom.hist' SIGHUP EXIT
答案2
您可以在每条命令后保存历史文件。此技巧通常用于同步多个窗口的历史记录,但在您的案例中也适用。例如,这个答案