ユーザ用ツール

サイト用ツール


claude_code

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
claude_code [2026/02/18 14:42] nullponclaude_code [2026/05/11 13:05] (現在) nullpon
行 6: 行 6:
 - [Claude Code by Anthropic | AI Coding Agent, Terminal, IDE(claude.com)](https://claude.com/product/claude-code) - [Claude Code by Anthropic | AI Coding Agent, Terminal, IDE(claude.com)](https://claude.com/product/claude-code)
 - [Claude Code overview - Claude Code Docs(code.claude.com)](https://code.claude.com/docs/) - [Claude Code overview - Claude Code Docs(code.claude.com)](https://code.claude.com/docs/)
 +
 +## 設定ファイル
 +
 +設定ファイルは3種類
 +
 +- グローバルスコープ: `~/.claude/settings.json`
 +- プロジェクトスコープ: `.claude/settings.json`
 +- ローカルスコープ: `.claude/settings.local.json`
 +
 +下のスコープほど優先度が高い。
 +
 +- グローバルスコープ: どこで起動しても有効になる個人設定
 +- プロジェクトスコープ: プロジェクトで共有する設定、[VCS](/vcs)にコミットして管理する想定
 +- ローカルスコープ: プロジェクトにおけるユーザの固有設定、バージョン管理から除外する想定
 +
 +## CLAUDE.md
 +
 +セッション開始時に読み込まれるプロンプト。セッション開始時に進みコンテキストが増えるほど影響が小さくなっていく。このため常に守って欲しいルール、例えば「コード修正したらテストを実行すること」といったルールを書くべきではない。(このようなルールはhookを使うといい)
 +
 +CLAUDE.mdには、セッション開始時に「このプロジェクトは何?」といった作業の取り掛かりになる情報を与えるのが良い。
  
  
行 25: 行 45:
 ## Claude Codeが実行するシェル環境 ## Claude Codeが実行するシェル環境
  
-※ このセクションはv2.1.45時点での動作です+このセクションはv2.1.45時点での情報です
  
 claude codeはコマンドをbashまたはzshで実行する。この時の環境はログインシェルかつ非インタラクティブシェルである。つまりzshであれば`,zprofile`は読み込まれるが`.zshrc`は読み込まれないはずである。しかしclaude codeは`,zshrc`で定義している関数や環境変数を使うことができる。 claude codeはコマンドをbashまたはzshで実行する。この時の環境はログインシェルかつ非インタラクティブシェルである。つまりzshであれば`,zprofile`は読み込まれるが`.zshrc`は読み込まれないはずである。しかしclaude codeは`,zshrc`で定義している関数や環境変数を使うことができる。
  
-これはshell-snapshotという仕組みで実現されている。詳細は不明だがおそらく.zshrcの内容を先に実行して、その結果作成されるシェル関数PATH環境変数を~/.claude/shell-snapshots以下に書き出し、コマンド実行のたびにsourceして読み込んでいるものと推測される。+これはshell-snapshotという仕組みで実現されている。詳細は不明だがおそらく.zshrcの内容を先に実行して、その結果作成されるシェル関数、シェルオプション、コマンドエイリアス、PATH環境変数を~/.claude/shell-snapshots以下に書き出し、コマンド実行のたびにsourceして読み込んでいるものと推測される。
  
 この仕組みのためか、コマンドの遅延ロードのようなギミックを仕込んでいるとコマンドが正常に動かないことがある。shell-snapshotを作成するときは`CLAUDECODE`という環境変数がセットされている。これを見て遅延ロードしないように分岐すると良い この仕組みのためか、コマンドの遅延ロードのようなギミックを仕込んでいるとコマンドが正常に動かないことがある。shell-snapshotを作成するときは`CLAUDECODE`という環境変数がセットされている。これを見て遅延ロードしないように分岐すると良い
行 36: 行 56:
 if command -v rbenv >/dev/null 2>&1; then if command -v rbenv >/dev/null 2>&1; then
   if [[ $CLAUDECODE == 1 ]]; then   if [[ $CLAUDECODE == 1 ]]; then
-    # claude codeはrbenvを即時ロードする+    # claude codeはrbenvを即時ロードする(これは反映されないことがある次セクション参照)
     eval "$(command rbenv init -)"     eval "$(command rbenv init -)"
   else   else
行 51: 行 71:
  
 ``` ```
 +
 +## CLAUDE_ENV_FILE
 +
 +シェル実行時に読み込まれるファイル。先の.zshrcではClaudeから実行された場合、rbenv initを即時実行するようになっているが、rbenvがPATHに追加されず、Claude Codeからrubyを実行しようとするとシステムのRubyが使われてしまう。.zshrcで設定されるPATHは反映されたりされなかったりする(この原因がよくわからない・・・)。同様にnvmなども反映されない。
 +
 +このような場合CLAUDE_ENV_FILE環境変数を使うと確実にPATHを設定できる
 +
 +.zprofileに以下を追加
 +
 +```bash
 +CLAUDE_ENV_FILE=~/.claude/env.sh
 +```
 +
 +~/.claude/env.shに以下を追加
 +
 +```bash
 +#!/bin/bash
 +
 +# nvmのパスを通す
 +nvm_dir=$(printf '%s\n' "$HOME/.nvm/versions/node/v"* | sort -V | tail -1)
 +if [[ -d $nvm_dir ]]; then
 + export PATH="$nvm_dir/bin:$PATH"
 +fi
 +
 +# rbenvのパスを通す
 +if [[ -d "$HOME/.rbenv/shims" ]]; then
 + export PATH="$HOME/.rbenv/shims:$PATH"
 +fi
 +```
 +
 +
  
  
claude_code.1771425746.txt.gz · 最終更新: by nullpon