zshでコマンドがインストールされていない時の反応をbash風に@Ubuntu
Ubuntu(7.04以降)でコマンドがインストールされていない時に出てくるメッセージ
$ rpm プログラム 'rpm' はまだインストールされていません。 次のように入力することでインストールできます: sudo apt-get install rpm bash: rpm: command not found
bashの特殊関数機能で,コマンドが見つからなかった時に [command_not_found_handle] と言う関数が呼ばれる.(debian独自のbash拡張らしい...後に正式にbashの機能となったとか?)
Ubuntuでは [/etc/bash.bashrc] に実装してあるので参照.
zshにもいろいろな特殊関数があるが,コマンドが見つからない時に呼ばれる関数はない.
zshではprecmd(プロンプト表示前に呼び出される関数)とpreexec(コマンド実行前に呼び出される関数)という2つの特殊関数を用いてこれを実装してある.
zshをインストールしたら [/etc/zsh_command_not_found]があると思うのでこれを読み込むだけ.
source /etc/zsh_command_not_found
ただし,当然precmdとpreexecを自前で定義してる場合は上書きされる.
その場合は内容をコピーして付け加えるのが早い.
読み込み前
$ rpm zsh: command not found: rpm
読み込み後
$ rpm zsh: command not found: rpm プログラム 'rpm' はまだインストールされていません。 次のように入力することでインストールできます: sudo apt-get install rpm