Bash

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

  • February 21, 2019

如果我在bashshell 中,由於stty設置方式,鍵入Ctrl+D將發送一個EOFto bash,然後它將執行與命令幾乎相同的exit操作,並退出 shell。

我想知道是否有某種方法可以暫時重新映射它,以便bash在收到 時不會退出EOF,而是執行我選擇的其他命令。


我的動機是我正在使用 Python virtualenvs(通過virutalenvwrapper)。workon foo將進入virtualenv,deactivate並將離開virtualenv。

有時,deactivate可用於清理,但當 I Ctrl+時D,它會跳過該步驟。

如果我可以做到Ctrl+ D(A) 執行deactivate並剛剛退出 virtualenv (並重新映射Ctrl+Dexit再次),那麼我可以繼續我的 shell,或者 (B) 執行deactivate然後exit它仍然會退出 shell,但是將進行清理,那太好了。

當 shell 退出時,您可以擷取EXIT執行特定的命令/函式。

trap deactivate EXIT

deactivate在退出 shell 之前執行。

有關更多範例,請參見http://redsymbol.net/articles/bash-exit-traps/

引用自:https://unix.stackexchange.com/questions/502034