Ubuntuが「コマンドが見つかりません」と言うのになぜそんなに時間がかかるのですか


24

何らかの理由で、私のセットアップでは、誤ってコマンドをタイプミスしたときに「コマンドが見つかりません」と応答するためにUbuntuが数秒かかることがあります。なぜそんなに時間がかかるのですか?待つ時間を短縮する方法はありますか?

PATHには13個のディレクトリがありますが、それでも(ほとんどのファイルには数個のファイルしかありません)、13個のディレクトリでコマンドを検索するのに数秒はかかりませんか?

回答:


34

シェルは、単に見るだけではありません$PATH。コマンドが見つからない場合、bash関数command_not_found_handleが実行され、次にpythonスクリプトが呼び出されます/usr/lib/command-not-found。これは、コマンドが機能するためにインストールする必要があるプログラムをパッケージリストで検索します。解決方法を知っているタイプミスの場合は、Ctrl+ Cを押して検索プロセスを中止します。

タイプミスに役立つメッセージの例:

$ aptget update
No command 'aptget' found, did you mean:
 Command 'apt-get' from package 'apt' (main)
aptget: command not found

不足しているパッケージに関する有用なメッセージの例:

$ deja-dup
The program 'deja-dup' is currently not installed.  You can install it by typing:
sudo apt-get install deja-dup

この背後にある根拠も参照してください、https://wiki.ubuntu.com/CommandNotFoundMagic


5
Linusはこれについて何かを投稿しました:plus.google.com/u/0/102150693225130002912/posts/iz7zR9B1Prv
bcbc

そして、これは本当に素晴らしい機能だと思います!存在するはずであるが存在しないコマンドを使用する場合、それをインストールするために何を入力するかを直接指示されます。
トールビョーンラヴンアンデルセン

8

「command-not-found」という名前のパッケージが原因です。アンインストールして、応答時間を短縮できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.