zsh の設定ファイル `.zprofile` と `.zshrc` は、読み込まれるタイミングが異なる。
| ファイル | 読み込みタイミング | 用途 |
| --- | --- | --- |
| `.zprofile` | ログインシェル起動時 | 環境変数 (`export` するもの) |
| `.zshrc` | インタラクティブシェル起動時 | エイリアス、補完、プロンプト |
## 使い分けの基準
```
.zprofile → export するもの(環境変数)
.zshrc → export しないもの(エイリアス、関数、見た目)
```
## なぜ分けるのか
環境変数は子プロセスに継承されるため、1 回設定すれば十分。`.zshrc` に `PATH` を書くと、サブシェルを起動するたびに重複する。
```bash
# .zshrc に PATH を書いた場合の問題
echo $PATH
/home/user/bin:/usr/bin:/bin
zsh # サブシェル起動
echo $PATH
/home/user/bin:/home/user/bin:/usr/bin:/bin # 重複
```
## 具体例
```bash
# .zprofile(環境変数)
export PATH="$HOME/.local/bin:$PATH"
export EDITOR="vim"
# .zshrc(インタラクティブ用)
alias ll='ls -la'
eval "$(starship init zsh)" # プロンプト
```
## 関連ノート
- **[派生]** [[Shell のシングルクオートとダブルクオートの違い]]: 本ノートの設定ファイル読み込みタイミングと並ぶ、Shell の基礎知識