シェル (bash/zsh) では、シングルクオート (`'`) とダブルクオート (`"`) で変数展開の動作が異なる。
| クオート | 変数展開 | 例 |
| ------- | ---- | ------------------------- |
| `"..."` | される | `"$HOME"` → `/Users/tanu` |
| `'...'` | されない | `'$HOME'` → `$HOME`(リテラル) |
```bash
# ダブルクオート: 変数が展開される
echo "Home is $HOME"
#> Home is /Users/tanu
# シングルクオート: 変数が展開されない
echo 'Home is $HOME'
#> Home is $HOME
```
## 使い分けのルール
- **変数展開が必要** → ダブルクオート必須
- **リテラル文字列** → シングルクオートが安全
```bash
# 変数展開が必要な例
export PATH="$HOME/.local/bin:$PATH"
# リテラル文字列の例
if [ -f '/path/to/file' ]; then
```
## 関連ノート
- **[応用]** [[dotfiles ではパスをハードコードせず環境変数を使う]]: 本ノートの使い分けルールが効く具体例
- **[派生]** [[シェルスクリプトは実行権限を付与して直接実行する]]: 本ノートのクオート使い分けと並ぶ、Shell を書くための基礎知識
- **[派生]** [[zshrc と zprofile の使い分け]]: 本ノートのクオート使い分けと並ぶ、Shell の基礎知識