最終的には.npmrc ファイルから prefix=/Users/midoriiriyama/.npm-global の設定を削除したことで問題が解決しました。

やったこと

npm がどこにグローバルパッケージをインストールしているかを確認。

npm root -g

.zshrcのPATHを変更(古い記述は#でコメントアウトか削除)nanoやvimエディタで。

nano ~/.zshrc
export PATH="$HOME/.npm-global/bin:$PATH"

これで動かなかった。原因は

  • nvm を使って Node.js を管理している。
  • ~/.npmrc に入っている prefix により、npm install -gnvm 管理下ではなく別の場所にインストールされ、gemini コマンドがうまく動かなくなる。

そこで、prefix を削除して、nvm に任せることにして。

nano ~/.npmr

下の行を削除。保存して終了(nano なら Ctrl + OEnterCtrl + X)。

prefix=/Users/midoriiriyama/.npm-global

これで無事に動くようになりました。

何が問題だったのか?

npmがグローバルパッケージをインストールする場所が意図しないディレクトリに設定されていたためです。

  • prefix=/Users/midoriiriyama/.npm-global の設定があった場合(今回):
    npm はグローバルパッケージを通常とは異なるパス(この場合は /Users/midoriiriyama/.npm-global)にインストールしようとします。もしこのパスがシステムやZshの PATH 環境変数に含まれていなかった場合、そこにインストールされた gemini コマンドは見つけられず、「command not found」となります。
  • prefix を削除した場合:
    prefix 設定を削除することで、npmはデフォルトのグローバルインストールパスを使用するようになります。macOSの場合、これは通常 /usr/local/bin のようなディレクトリ(または brew でNode.jsをインストールした場合はそれに準じたパス)になります。これらのパスは、ほとんどのシステムでデフォルトで PATH 環境変数に含まれているため、gemini コマンドが認識されるようになったわけです。

.npmrcprefix が設定されていると、グローバルパッケージのインストール場所がデフォルトから変更されるため、PATH 環境変数もそれに合わせて適切に設定しないと、今回のような問題が発生することがあります。

今後同様のケースが起こったら?

以下の点を確認すると良いです。

  1. npm root -g でグローバルインストールパスを確認する:
    これにより、現在npmがグローバルパッケージをどこにインストールしているかがわかります。
  2. echo $PATHPATH 環境変数を確認する:
    コマンドが実行される際に検索されるディレクトリのリストが表示されます。npm root -g で表示されたパス、またはその親ディレクトリ(実行ファイルが格納されている場所)がこのリストに含まれているかを確認します。
  3. .npmrc ファイルを確認する:
    もし意図しない prefix 設定がある場合は、それを削除するか、PATH 環境変数に追加する必要があるかを検討します。