「コマンドが見つかりません...」というエラーを解消する

「コマンドが見つかりません...」というエラーを解消する

ターミナルでコマンドを間違って入力すると、次のエラーが発生しました:

bash: XX: command not found...

その後、プロンプトを再び使用できるようになるまで待つか、キーボード割り込みを使用する必要があります。シェルが何らかのコマンドをインストールするように提案することがあり、これは非常に煩わしいです。

この遅延を解消する方法はありますか?

回答ありがとうございます

答え1

遅延は税関のコマンドが見つからないハンドラディストリビューションによって追加されます。通常はシステム全体の/etc/bash.bashrcファイルのどこかに追加されます。

ハンドラは特定の名前を持つシェル関数なので、次のように無効化したり上書きしたりすることもできます。~/.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 と同じものに送信する」という意味です。

関連情報