1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pipをアップデートした後pipコマンドを実行しようとすると「No such file or directory」って言われた

Last updated at Posted at 2020-03-03

問題「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は、「内蔵されていない、頻繫に使うコマンド」をハッシュテーブルに記憶しているということだ。
つまり、

  1. pipをインストールしたとき、前バージョンのpipはアンインストールされた
  2. だが、ハッシュテーブルには前バージョンのpipのPASSが記憶されままだった
  3. ターミナルでpipコマンドを実行しても、OSはハッシュテーブルを見て、前バージョンのpipを探した
  4. 前バージョンのpipはアンインストールされていたから見つからない

といった具合だろうか。

次起こった時は?

参考サイトによると、

hash -rはハッシュテーブルに記憶しているパス情報を消去する

らしい。これでは前バージョンの情報以外の削除してほしくない記憶まで消されそうだ。そこで、

hash -d コマンド名はコマンド名に対応する記憶を削除する。

また、

hashだけを実行すると、ハッシュテーブルに記憶されているパス名と、そのパスでコマンドを実行した回数が表示されます。

とあるので次回は、まずhashでハッシュテーブル内を確認し、hash -d コマンド名で不要な記憶だけを削除しようと思う。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?