Bash

當 CTRL-C 不工作時如何在命令行中工作?

  • May 27, 2022

我正在努力在某個環境 shell 命令行(CentOS 7 / Windows 主機的 Vagrant 來賓)中不使用 CTRL+C。我在那裡使用 bash。作業系統似乎無關緊要。

範例執行sleep 1000並按 ctrl-c:

$ sleep 1000
^C^C^C

所以,它輸入 ^C 就是這樣。

^C注定要中斷。

$ stty -a
intr = ^C; ... 

如何讓它發揮作用?

在下面的文章中,我受到啟發來修復它,答案解釋了很多,但沒有給出如何使其工作的簡單答案。

為什麼 Ctrl-C 不起作用?

我正在努力解決這似乎很簡單的事情。

正如我們如何在 bash 中將信號陷阱設置為 SIG_IGN 和 SIG_DFL 中所述?簡單的解決方案是:

trap - INT

例如,只需將此程式碼添加到~/.bashrcbash 中。

我決定不找到原因的根源,而只是解決它。

另一個有趣的文章: 刪除 ^C when CTRL+C

這聽起來可能是一個鍵映射問題。

在 shell 提示符下,鍵入:

stty sane

然後嘗試使用 CTRL-C 停止命令。如果它仍然不起作用,請添加以下輸出:

stty -a

你的問題。該stty -a命令將列出您目前的終端線路設置。感興趣的項目稱為intr。如果intr設置不正確,CTRL-C 將不起作用。

如果intr設置不正確,您可以嘗試使用以下方法重置它:

stty intr CTRL-V-C

這意味著您鍵入stty intr,然後輸入一個空格,然後按住 CTRL 鍵並按下v,然後c在它們之間沒有空格或其他字元。

之後,嘗試再次使用 CTRL-C 停止命令並查看結果。

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