CHAPTER 10 · 6 LESSONS · 78 問

シェルの環境

打った文字が、コマンドに届く前に何をされているか。

ここまで、打った文字はそのままコマンドに渡っていると思っていたよね。実は違うんだ。

あなたと Linux のあいだにはシェルという通訳がいて、⏎ を押した瞬間に文字を書き換えている。*.txt をファイル名の一覧に広げているのも、$HOME を実際の場所に置きかえているのも、コマンドではなくシェルの仕事だよ。

  • 環境変数 … echo $HOME export env
  • PATHコマンドが見つかる仕組みそのもの
  • クォートとエスケープ … '"\ の違い
  • 展開の順番 … * ? ~ $ がいつ広がるか
  • エイリアスと履歴 … alias history
  • .profile … 起動するたびに読まれる設定

この章がいちばん「なるほど」が多いところだよ。ls と打って ls が動く理由PATH)、ファイル名に空白があると壊れる理由(展開)、引用符を使い分ける理由$ を広げるか広げないか)が、全部つながって見えてくる。

ここが分かると、エラーメッセージの読み方も変わる。「コマンドが悪い」のか「シェルが違うものを渡した」のかを、切り分けられるようになるからだよ。

この章のレッスン

変数と PATH

  1. 52値をしまう入れ物(変数)シェルにものを覚えさせる。子に渡すには export が要る。 問題へ
  2. 53コマンドが見つかる仕組み(`PATH`)ls と打つと ls が動く理由。自分の道具箱を作る。 問題へ

クォートと展開

  1. 54引用符で守る(`'` と `"` と `\`)シェルに書きかえさせるか、そのまま渡すか。空白入りの名前を扱えるようになる。 問題へ
  2. 55広がる順番(`~` `$` `*`)⏎ を押してからコマンドが動くまでに、シェルが何を何の順でやっているか。 問題へ

自分の道具に仕立てる

  1. 56エイリアスと履歴長いコマンドに短い名前を付けて、打った手を呼び戻す。 問題へ
  2. 57`.profile` に書いて残す端末を開くたびに読まれるファイルに、自分の設定を書いておく。 問題へ

つぎは「スクリプトを書く」。打った手順をファイルに書いて、名前で呼べるようにする。