Claude Codeをインストールしたはずなのに、claude
コマンドが見つからないエラーに遭遇した話を備忘録として残しておきます。
問題の発生
Claude Codeのインストール
公式手順に従って npm でグローバルインストールを実行:
$ npm install -g @anthropic-ai/claude-code
問題発生
インストール後にコマンドを実行しようとするとエラー:
$ claude
zsh: command not found: claude
公式手順通りにやったのに上手くいかない...なぜ?
原因と解決方法
原因
nodenvを使用している環境では、グローバルパッケージをインストールした後に追加の手順が必要
nodenvは「shims」という仕組みでコマンドを管理しているため、新しくインストールされたコマンドを認識させるために「rehash」が必要です。
解決方法
$ nodenv rehash
トラブルシューティング
もし以下のエラーが出た場合:
nodenv: cannot rehash: /Users/<user>/.nodenv/shims/.nodenv-shim exists
次のコマンドでshimsディレクトリを再作成:
$ rm -rf ~/.nodenv/shims
$ nodenv rehash
動作確認
$ claude --version
1.0.24 (Claude Code)
nodenvのshimsとは?
公式説明(和訳)
nodenvは、シムと呼ばれるディレクトリをPATHの先頭に挿入することで動作します:
~/.nodenv/shims:/usr/local/bin:/usr/bin:/bin
「リハッシング」と呼ばれるプロセスを通じて、nodenvはそのディレクトリ内に、インストールされているすべてのNodeバージョンにわたるすべてのNodeコマンド(node、npmなど)に対応するシムを維持します。
動作の流れ
-
npm install -g @anthropic-ai/claude-code
でパッケージをインストール - この時点では、shimsディレクトリに
claude
コマンドは存在しない -
nodenv rehash
を実行 - shimsディレクトリに
claude
用の実行ファイルが作成される
確認方法
rehash後、shimsディレクトリを確認すると:
$ ls ~/.nodenv/shims
claude node npm npx ...
shimの中身(参考)
~/.nodenv/shims/claude
の内容例:
#!/usr/bin/env bash
set -e
[ -n "$NODENV_DEBUG" ] && set -x
program="${0##*/}"
if [ "$program" = "node" ]; then
for arg; do
case "$arg" in
-e* | -- ) break ;;
*/* )
if [ -f "$arg" ]; then
export NODENV_DIR="${arg%/*}"
break
fi
;;
esac
done
fi
export NODENV_ROOT="/Users/<user>/.nodenv"
exec "/opt/homebrew/bin/nodenv" exec "$program" "$@"
まとめ
nodenv環境でnpmグローバルパッケージをインストールした場合は、必ずnodenv rehash
を実行するが必要ですね〜。勉強になりました。