恥ずかしながら、zsh では rehash が必要というのに気づかなかった。
bash では rehash 不要なので、 Mac使いには比較的新しめの常識ということになるのかな (でも Catalina から zsh に切り替わっているので、 もう bash 知らない人の割合も増えたんでしょうね。) Linux ではまだ bash 多いのかなあ(よく知らない)。
個人的には、シェルとして長く tcsh を使っていたせいで、割と頻繁に rehash する癖がついていた。 コマンドラインで使うソフトウェアを新しくインストールしたときは、 同時にシェルの設定ファイルが書き換えられる場合が多いこともあって、 command+N で新しくウィンドウを開いて動作チェックするので (必然的に新しく起動したシェルを使うことになる)、 今日まで気づかなかった。 今回、 自作のシェル・スクリプト (rsync) をたくさんの Mac にインストールしたせいで気づいた。
昔からやっていると、新しいものをインストールしたら rehash、 はほとんど指が記憶していて、 2秒未満でやってしまうので特に面倒とは感じないのだけど、 そういうのは面倒と感じる人がいるのね。まあ、そうか。
そういう人は、例えば次のように設定したりするそうだ。
~/.zshrc に追加 |
zstyle ":completion:*:commands" rehash 1 |
必ずコンプリーションするものなのかしら?と思ったりするのだが。
一方、次のようにしている、という人もいた。
~/.zshrc に追加 |
clear-screen-rehash() { zle clear-screen rehash zle reset-prompt } zle -N clear-screen-rehash bindkey '^L' clear-screen-rehash |
画面クリアは私は手で clear と打つ習慣になっていて、 clear をエイリアス定義して、 便乗して何かを仕込むということはしていたので、 そういう考え方をするのは分かる。
私の ~/.tcshrc から |
alias clear 'printf "\033[?2004l"; /usr/bin/clear' |