當我在終端機中錯誤輸入命令時,出現以下錯誤:
bash: XX: command not found...
之後,我必須等待或使用鍵盤中斷才能再次使用提示。有時 shell 會要求我安裝一些指令,這很煩人。
有什麼辦法可以擺脫這種延遲嗎?
感謝您的解答
答案1
延遲是由習慣造成的命令未找到處理程序由您的發行版新增。它通常被添加到系統範圍/etc/bash.bashrc
檔案中的某個位置。
該處理程序只是一個具有特定名稱的 shell 函數,因此您也可以透過以下方式停用或覆寫它~/.bashrc(例如,如果您不想變更系統範圍的配置)。
如果發行版的處理程序太慢,那麼您可以簡單地刪除 ( unset -f
) 該函數並返回 bash 的標準行為:
unset -f command_not_found_handle
另一方面,如果你不喜歡訊息,然後您可以定義自己的處理程序版本(再次通過 ~/.bashrc):
command_not_found_handle() {
echo "I don't know what '$1' is." >&2
return 1
}
答案2
另一種方法是卸載提供可執行檔的套件pk-command-not-found
——在我的 Rocky Linux 9 上,command_not_found_handle
看起來像這樣:
command_not_found_handle ()
[[ ! -x '/usr/libexec/pk-command-not-found' ]] && runcnf=0;
'/usr/libexec/pk-command-not-found' "$@";
printf 'bash: %scommand not found\n' "${1:+$1: }" 1>&2;
所以您可以看到它依賴於該/usr/libexec/pk-command-not-found
可執行檔。
在類似 Red Hat 的系統上,您可以執行以下操作來找出它是什麼軟體包並將其卸載:
# rpm -qf /usr/libexec/pk-command-not-found
PackageKit-command-not-found-1.2.4-2.el9.x86_64
# dnf remove PackageKit-command-not-found
這會在系統範圍內改變它,所有使用者都會受到影響。
哦,這2>&1
只是 bash 檔案句柄重定向。它的字面意思是「將我的 stderr 發送到與 stdout 相同的東西」。