1.06.1基礎
現在の対話的Bashでgsをgit statusへ展開する。
展開文字列を1つのalias定義として渡す。
適切なコマンドはどれか。
× 不正解
alias定義の値に空白がある場合は引用し、NAME=value全体を1つの引数としてalias組込みへ渡す。
詳細解説
誤り
alias gs=git statusstatusがaliasコマンドの別引数となり、意図した1つの値としてまとまらない。
引用がないためgs=gitとstatusが別の引数になる。gsへ登録される展開文字列にstatusを含められない。
正しい
alias gs='git status'空白を含む展開文字列を引用してgsへ登録する。
単一引用によりgit statusを定義時には実行・分割せず、gsの展開文字列としてまとめて登録できる。
誤り
alias 'gs=git' statusstatusを展開文字列へ含めず、別のalias照会として扱おうとする。
引用範囲がgs=gitまでなので、statusは別のalias名を照会する引数になる。gsはgitだけへ展開される。
誤り
alias gs $(git status)git statusを定義時に実行して出力を引数へ展開する。
コマンド置換はaliasを使ったときではなく定義した時点でgit statusを実行する。出力も単語分割され、意図した定義にならない。
実際に確かめる
一時的な検証環境で実行できる例です。
bash --noprofile --norc -ic "alias gs='printf alias-quoted\\n'; alias gs"期待される結果
gsのalias定義を表示理解のポイント
- 空白を含む値は引用
- 定義時に実行しない
- alias NAME=value
確認時の注意
- 確認環境: GNU Bash 5.2 / 一時対話シェル
- aliasの末尾空白には次の語もalias展開対象にする特殊な意味がある。
基礎のおさらい
単一引用
単一引用内では空白や$などを文字どおり保持でき、定義時の展開を防げる。
実行時の展開
登録されたaliasは後にgsをコマンド位置で入力した時点でgit statusへ置換される。
問題IDKL-102-908
確認環境GNU Bash 5.2 / 一時対話シェル
最終技術確認2026-08-13
誤り・権利侵害を報告