コマンドが見つからないのに長い遅延が発生するのはなぜですか?


18

多くの場合、lsなどのコマンドを誤って入力すると(たとえば、「s」を入力する前にEnterキーを押します)、端末が表示された後、長い(〜2秒)遅延が発生します。

bash: l: command not found...

間違ったパスワードを入力した後、同様の遅延の理由を理解できます。「間違ったパスワードを入力した後、大きな遅延があるのはなぜですか?」。しかし、なぜ認識されないコマンドの後に遅延するのでしょうか?んFAIL_DELAY/etc/login.defsも、この影響を与えますか?


8
たぶん、Fedoraは「このプログラムはインストールされていません。インストールするには、入力してください...」という恐ろしいUbuntuの機能を使用しているかもしれません。この遅延は、インストール可能なすべてのパッケージのデータベースを検索することにより発生します。psql(PostgreSQLの一部)を呼び出してみてください。これはおそらくデフォルトではインストールされませんが、できればリポジトリにあるはずです。
ウルリッヒ・シュワルツ

echo "$PROMPT_COMMAND"出力は何ですか?
rozcietrzewiacz

echo "$ PROMPT_COMMAND":printf "\ 033] 0;%s @%s:%s \ 007" "$ {USER}" "$ {HOSTNAME %%。*}" "$ {PWD /#$ HOME /〜 } "
ペイズリー

echo $ PATHは何を出力しますか?リターンキーを押すたびにシステムがチェックします。
ハナンN.

回答:


19

いくつかの研究の後、私はこれを見つけまし

  • command-not-foundパッケージをアンインストールしてから、$>yum remove command-not-found再度>$yum install command-not-foundインストールします(システムにそのパッケージがインストールされている場合に備えて)。

それでも解決しない場合:

  • これを~/.bashrcファイルに追加します。

    unset command_not_found_handle


2
2番目の提案は遅延を取り除いた。パッケージcommand-not-foundがインストールされていません。ありがとう!
ペイズリー

私はデフォルトでこれを有効にするには、良いアイデアだと思った誰の判断に疑問
fostandy

16

少なくともFedoraでの最善の解決策は、構成ファイルを変更することです。
/etc/PackageKit/CommandNotFound.conf

最大の遅延はインストールするパッケージの検索から来るため SoftwareSourceSearch=trueSoftwareSourceSearch=false

遅延はほぼ0であり、スペルミスについては警告が表示されますが、これは便利です。


3

Fedoraは同様のものを使用します。

この機能を単に削除したい場合:

yum remove PackageKit-command-not-found

フォローアップ:このパッケージを削除すると、エラーメッセージが表示されます: bash: /usr/libexec/pk-command-not-found: No such file or directory これを修正するには、パッケージを削除した後にファイルを作成し、/ usr / libexec / pk-command-not-foundを次の #!/bin/sh echo "Command not found: $1" ように出力します。コマンドが見つかりません:fail-command

0

私の場合、/ usr / libexec / pk-command-not-foundの既知のプロキシバグが原因です。

Failed to search for file: cannot update repo 'updates':
Cannot prepare internal mirrorlist:
Curl error (28): Timeout was reached for https://mirrors.fedoraproject.org/metalink?repo=updates-released-f28&arch=x86_64 
[Connection timed out after 30002 milliseconds]

ベアカールコマンドを使用してまったく同じURLをダウンロードするとすぐに成功するため、プロキシ構成は正しいです。

pk-command-not-foundプロセスにプロキシ設定があることを確認しました。

tr  '\0' '\n' < /proc/$(pgrep -f pk-command-not-found)/environ | grep -i proxy

ただし、何らかの未知の理由で使用しません。

https://bugzilla.redhat.com/show_bug.cgi?id=1553368

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