如果我在bash
shell 中,由于stty
设置方式不同,输入Ctrl+D将发送一个EOF
to bash
,然后它会执行与命令几乎相同的操作exit
,并退出 shell。
我想知道是否有某种方法可以暂时重新映射它,以便bash
在收到 时不会退出EOF
,而是执行我选择的其他命令。
我的动机是使用 Python virtualenvs (通过virutalenvwrapper
)。workon foo
将进入 virtualenv,并将deactivate
离开 virtualenv。
有时,deactivate
可用于清理,但当 I Ctrl+时D,它会跳过该步骤。
如果我可以做到这一点Ctrl,D那么(A)运行deactivate
并刚刚退出virtualenv(并再次重新映射+ Ctrl),这样我就可以继续我的shell,或者(B)运行,然后它仍然会退出shell,但将会进行清理工作,那就太好了。Dexit
deactivate
exit
答案1
EXIT
当 shell 退出时,您可以捕获运行特定的命令/函数。
trap deactivate EXIT
deactivate
将在退出 shell 之前运行。