在 bash 中重新映射 EOF (ctrl+D)

在 bash 中重新映射 EOF (ctrl+D)

如果我在bashshell 中,由于stty设置方式不同,输入Ctrl+D将发送一个EOFto bash,然后它会执行与命令几乎相同的操作exit,并退出 shell。

我想知道是否有某种方法可以暂时重新映射它,以便bash在收到 时不会退出EOF,而是执行我选择的其他命令。


我的动机是使用 Python virtualenvs (通过virutalenvwrapper)。workon foo将进入 virtualenv,并将deactivate离开 virtualenv。

有时,deactivate可用于清理,但当 I Ctrl+时D,它会跳过该步骤。

如果我可以做到这一点CtrlD那么(A)运行deactivate并刚刚退出virtualenv(并再次重新映射+ Ctrl),这样我就可以继续我的shell,或者(B)运行,然后它仍然会退出shell,但将会进行清理工作,那就太好了。Dexitdeactivateexit

答案1

EXIT当 shell 退出时,您可以捕获运行特定的命令/函数。

trap deactivate EXIT

deactivate将在退出 shell 之前运行。

http://redsymbol.net/articles/bash-exit-traps/了解更多示例。

相关内容