CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/Claude Code
Claude Code/2026-05-14中級

Claude Code で nvm/pyenv/asdf が認識されない - シェル初期化の仕組みと4つの解決策

Claude Code でnvm・pyenv・asdfが使われず「node: command not found」「python version mismatch」が出る問題の原因と解決策を解説します。シェル初期化の仕組みを理解することで根本解決できます。

claude-code129nvmpyenvasdfPATH2トラブルシューティング37環境変数2

npm run dev を実行させたら node: command not found と返ってきた」——Claude Code を使い始めたとき、私が最初にぶつかった壁のひとつです。

ローカルのターミナルでは問題なく動くのに、Claude Code 経由だと突然バージョンマネージャーが効かなくなります。nvm で管理している Node.js が「見えない」、pyenv で設定した Python バージョンが使われありません。この問題に数時間溶かした経験がある方は少なくないはずです。

2014年からアプリ開発を続けてきた中で、環境変数まわりのトラブルは何度も経験してきました。その経験から言えることは「原因を理解すれば確実に再現しなくなる」ということです。このエラーにも同じことが言えます。

なぜ Claude Code でバージョンマネージャーが使えなくなるのか

Claude Code が Bash ツールでコマンドを実行するとき、ログインシェルの初期化スクリプト(.bashrc.zshrc.bash_profile)を自動的に読み込みません。

通常、ターミナルを開くと次の順番で初期化が走ります:

~/.zprofile → ~/.zshrc → (nvm/pyenv/asdf の初期化コード) → PATH に追加される

nvm を例にとると、.zshrc.bash_profile の中に次のような行があります:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

これがシェルを開くたびに実行されて、nvm コマンドと、指定したバージョンの Node.js が PATH に追加されます。

ところが Claude Code のサブプロセスは「ノンインタラクティブな非ログインシェル」として起動するため、これらの初期化コードが走りません。そのため、nodepython(バージョン管理されたもの)がどこにあるかを知らないまま実行しようとして command not found になります。

まず自分の環境を診断する

実際に何が起きているか確認する方法を最初に示します。Claude Code に次のコマンドを実行させてみてください:

# Claude Code のサブプロセスから見えているPATHと実行ファイルの場所
echo "PATH: $PATH"
which node 2>/dev/null || echo "node: not found"
which python3 2>/dev/null || echo "python3: not found"
node --version 2>/dev/null || echo "node version: unknown"
python3 --version 2>/dev/null || echo "python3 version: unknown"

ローカルのターミナルで同じコマンドを実行し、出力を比べてください。PATH が大きく異なっていたり、/home/user/.nvm/versions/node/v20.x.x/bin のようなパスがない場合、これが原因です。

解決策1:絶対パスで実行する(即効性あり)

最もシンプルな方法は、コマンドを実行するとき絶対パスを指定することです。

nvm の場合:

# ~/.nvm 以下の実際のパスを確認
ls ~/.nvm/versions/node/
 
# 確認したパスを使って実行(例:v20.x.x)
~/.nvm/versions/node/v20.11.0/bin/node --version
~/.nvm/versions/node/v20.11.0/bin/npm install

pyenv の場合:

# pyenv で管理しているバージョンを確認
ls ~/.pyenv/versions/
 
# 絶対パスで実行
~/.pyenv/versions/3.11.8/bin/python3 -m pip install requests

この方法の欠点は、バージョンが変わるたびにパスを更新しなければならないことです。一時的な対処としては有効ですが、恒久的な解決には次の方法をお勧めします。

解決策2:CLAUDE.md にパスを明示する

プロジェクトルートの CLAUDE.md(なければ作成)に、使用するツールのパスを明示します。

## 開発環境
 
このプロジェクトは以下の環境を使用しています。
 
- Node.js: v20.11.0 (nvm管理)
  - `node` = `~/.nvm/versions/node/v20.11.0/bin/node`
  - `npm` = `~/.nvm/versions/node/v20.11.0/bin/npm`
- Python: 3.11.8 (pyenv管理)
  - `python3` = `~/.pyenv/versions/3.11.8/bin/python3`
 
コマンド実行時は上記の絶対パスを使用するか、以下のコマンドで事前に環境をロードしてください:
```bash
export PATH="$HOME/.nvm/versions/node/v20.11.0/bin:$HOME/.pyenv/versions/3.11.8/bin:$PATH"

CLAUDE.md に書くことで、Claude Code はプロジェクト開始時にこの情報を読み込み、以降の操作で自動的に正しいパスを使うようになります。

## 解決策3:bash -l でログインシェルとして実行する

特定のコマンドをどうしてもログインシェル経由で実行したい場合、`bash -l` でラップします:

```bash
# ログインシェルとして node を実行
bash -l -c "node --version"
bash -l -c "npm run dev"

# zshの場合
zsh -l -c "python3 --version"

ただし、これはすべての bash コマンドブロックに適用されるわけではありません。Claude Code の Bash ツールは各コマンドを個別のプロセスで実行するため、実行するたびに bash -l -c "..." で包む必要があります。頻繁に使う場合は次の方法が現実的です。

解決策4:volta や mise への移行を検討する

根本的な解決策は、シェルの初期化に依存しないバージョンマネージャーへの移行です。

voltamise(旧 rtx)は、シェルの初期化スクリプトに頼らずプロセスレベルで正しいバージョンを提供します。特に volta は、package.json に次のように書くだけで、どの環境でも自動的に正しい Node.js バージョンが使われます:

{
  "volta": {
    "node": "20.11.0",
    "npm": "10.2.4"
  }
}

mise は Node.js だけでなく Python、Go、Ruby など複数の言語を一元管理でき、.tool-versions ファイルでバージョンを固定できます。Claude Code との相性も良く、プロセス起動時に自動的に正しいバージョンを提供します。

移行コストはかかりますが、チーム開発でも同じ問題が起きにくくなるメリットがあります。私自身、壁紙アプリや引き寄せ系アプリの開発で複数の Node.js バージョンを切り替える必要があったとき、volta に移行してから同様の問題で時間を無駄にすることがなくなりました。

状況別の推奨アプローチ

  • 今すぐ動かしたい: 解決策1(絶対パス指定)
  • 特定プロジェクトで安定して使いたい: 解決策2(CLAUDE.md への明示)
  • チームで使っている・長期的に解決したい: 解決策4(volta/mise への移行)

bash -l を多用する方法(解決策3)は手軽ですが、毎回の記述が増えるのと、Claude Code の Bash ツールが期待通りにラップしてくれるかが不安定なため、補助的な位置づけが適切です。

まず解決策2(CLAUDE.md への記載)を試してみてください。5分もかからず設定でき、プロジェクトに関わる全員が同じ恩恵を受けられます。チームの CLAUDE.md に「この環境で開発するにはこのパスを使う」と書いておくだけで、似たような問題で新しいメンバーがつまずくことも防げます。

シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Claude Code2026-05-11
Claude Code MCP サーバーが起動しない — "spawn ENOENT" エラーの原因は PATH の罠だった
Claude Code で MCP サーバーを設定したのに「spawn npx ENOENT」「spawn uvx ENOENT」が出て起動しない。この厄介なエラーの根本原因は Claude Code が使う PATH と、あなたのシェルの PATH が別物だという点にあります。診断から修正まで解説します。
Claude Code2026-05-03
Claude Code のネットワーク・接続エラーを5分で診断して解決する方法
Claude Code で発生するネットワーク・接続エラーを体系的に診断する方法を解説します。よくあるエラーメッセージの意味と原因を整理し、5分以内に問題を特定できる診断フローをご紹介します。
Claude Code2026-07-17
テーブルが「… 2,847 more rows」で切れていた朝 — 描画上限とトークン計上を切り離して、ツール出力を設計し直す
Claude Code 2.1.209 で 200 行超の markdown テーブルは先頭 200 行+残り件数の表示になりました。省略されるのは描画だけで、モデルは全行を受け取ります。この差を測り、ツール出力を集約型へ組み替える設計をまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →