%20zsh%3A%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93.png)
私はついに大きな決心をし、zshを試してみることにしました。 CentOS 7 システムで実行中です。私にとって奇妙に思える唯一のことは、何らかの理由で不明なコマンドを入力するたびにコマンドが見つからないというメッセージが2回表示されることです。
たとえば、「失敗」と入力すると
zsh: fail: command not found...
zsh: command not found: fail
私は生涯の間になぜこれが起こるのかわからず、この問題を経験しているように見える他の人を見つけることもできません。たぶん私のGoogle-fuは十分に強力ではないかもしれませんが、どんなアドバイスにも感謝します。
これまで私の.zshはデフォルトです。
HISTFILE=~/.histfile
HISTSIZE=10000
SAVEHIST=10000
bindkey -e
zstyle :compinstall filename '/home/bmgraves/.zshrc'
autoload -Uz compinit
compinit
バッシュと一緒に:
bash: fail: command not found...
tcsh:
fail: Command not found.
print $+functions[command_not_found_handler]
+zsh:2> print 1
1
zsh -x:
+zsh:7> fail
+command_not_found_handle:1> local 'runcnf=1'
+command_not_found_handle:2> local 'retval=127'
+command_not_found_handle:5> [[ $- -regex-match i ]]
+command_not_found_handle:8> [ '!' -S /var/run/dbus/system_bus_socket ']'
+command_not_found_handle:11> [ '!' -x /usr/libexec/packagekitd ']'
+command_not_found_handle:14> [ ']'
+command_not_found_handle:17> [ 1 -eq 1 ']'
+command_not_found_handle:18> /usr/libexec/pk-command-not-found fail
zsh: fail: command not found...
+command_not_found_handle:19> retval=127
+command_not_found_handle:26> return 127
zsh: command not found: fail
答え1
コマンドが見つからない場合、zshはこの関数を呼び出します。command_not_found_handler
。この機能の一般的な用途は、コマンドがディストリビューションの一部であるがまだインストールされていないパッケージの一部である場合、コマンドをインストールする方法を提案することです。
zsh で関数がゼロ以外の状態を返す場合、zsh は一般的なエラーメッセージを出力します。 Bashには同様の機能(関数呼び出しcommand_not_found_handle
)がありますが、いくつかの違いがあります。 bash でコマンドがゼロ以外の状態を返す場合、bash はエラーメッセージを出力しません。
トレースを見ると、次を使っているようです。ああ、。これはpk-command-not-found
Fedoraのコマンドが見つかりませんハンドラを呼び出しており、bash用に設計されているため、独自のエラーメッセージを表示します。エラーメッセージの1つを抑制する明確な方法はありません。これが本当に面倒な場合は、command-not-found
oh-my-zsh設定からプラグインを削除できます。 (この場合、リポジトリで使用できますがインストールされていない場合は、コマンドを含むパッケージをインストールするように求められません。)