#コマンドが叩かれると(ちょっと嘘)
- コマンドを検索します。
- 取り敢えず環境変数PATHに格納されている場所順にコマンドを検索していくとしましょう。
- ちなみに我が家の環境ではこんな感じになってます
$PATH
$ echo $PATH | tr : \\n
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
上から順々に検索していきますが、毎度毎度検索するのは全く無駄ですね。
という訳でハッシュテーブルの登場です。
#ハッシュテーブルには何が
- お察しの通りだと思いますが、見つかったコマンドの場所をメモしておきます。
#コマンドが叩かれると(本当は)
- 先にハッシュテーブルにコマンド(とそのパス)があるかどうか確認する
- なければ環境変数PATHに格納されている場所から順々に検索する
- 見つかれば実行
- ハッシュテーブルに登録する事も忘れない
#ハッシュテーブルの中身を確認するには
-
hash
コマンドを引数無しで実行すればおk
ハッシュテーブルの確認
$ hash
hits command
2 /usr/bin/git
1 /bin/mv
1 /bin/cp
4 /bin/ls
ただし左側の数字は実行回数