問題「sudo pip install --upgrade pip」後にpipコマンドが使えない
sudo pip install --upgrade pip
でpipをアップデートしたら、色んなpipコマンドを試したが、bash: /usr/bin/pip: No such file or directory
って言われた。
解決法 hash -r
hash -r
をターミナルで実行したら直った。
自分なりの解釈
参考サイトによると、
シェルがビルトインコマンドではないコマンドを実行する場合、環境変数PATHから該当する実行ファイルを探す必要がありますが、頻繁に使うコマンドは「ハッシュテーブル」と呼ばれる場所に記憶しています。「hash」はこのハッシュテーブルの表示や削除、追加を行うコマンドになります。
要するに、OSは、「内蔵されていない、頻繫に使うコマンド」をハッシュテーブルに記憶しているということだ。
つまり、
- pipをインストールしたとき、前バージョンのpipはアンインストールされた
- だが、ハッシュテーブルには前バージョンのpipのPASSが記憶されままだった
- ターミナルでpipコマンドを実行しても、OSはハッシュテーブルを見て、前バージョンのpipを探した
- 前バージョンのpipはアンインストールされていたから見つからない
といった具合だろうか。
次起こった時は?
参考サイトによると、
hash -r
はハッシュテーブルに記憶しているパス情報を消去する
らしい。これでは前バージョンの情報以外の削除してほしくない記憶まで消されそうだ。そこで、
hash -d コマンド名
はコマンド名に対応する記憶を削除する。
また、
hash
だけを実行すると、ハッシュテーブルに記憶されているパス名と、そのパスでコマンドを実行した回数が表示されます。
とあるので次回は、まずhash
でハッシュテーブル内を確認し、hash -d コマンド名
で不要な記憶だけを削除しようと思う。