ターミナルでコマンドを間違って入力すると、次のエラーが発生しました:
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 と同じものに送信する」という意味です。