擺脫“找不到指令...”

擺脫“找不到指令...”

當我在終端機中錯誤輸入命令時,出現以下錯誤:

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 相同的東西」。

相關內容