「本当は怖くない黒い画面」入門(Windows + WSL2編) Part.2

今回も `/bin` の中のプログラムを使ってみることから始めましょう。 ## 3つ目のプログラム echo `/bin` の中に `echo` というプログラムがあったので使ってみましょう。 ````bash $ /usr/bin/echo hello ```` `/usr/bin/echo` の後にスペースを一個入れて、その後に適当な文字を入力してみてください。その文字が画面に表示されます。 ![Image from Gyazo](https://i.gyazo.com/feb34bf16f05eef8f0314e483aaa5d97.png) 「黒い画面」ではプログラムのファイル名を入力することでプログラムを実行しますが、その後ろにスペースを空けて文字を入れると、そのプログラムに文字を渡して実行することになります。この例では hello や hey という文字を `/usr/bin/echo` に渡して実行していることになります。 このプログラムに渡す文字のことを引数(ひきすう)と言います。「引用する数」という意味でしょうか?英語では argument(アーギュメント)といって、数学の用語だそうです。僕の記憶にはありませんが、高校とかで習ったかもしれません。 `echo`(エコー)は反響ややまびこという意味です。`echo` は引数として与えた文字をそのまま画面に表示するプログラムです。渡した文字を表示するだけのこんなプログラム何の役に立つんでしょう? ## 便利な仕組みPATHについて 前回、「黒い画面」ではファイル名を入力することでプログラムを実行すると言いました。`/usr/bin/ls` とか `/usr/bin/pwd` とか。しかし、これでは凄く深いディレクトリにあるプログラムを実行するのが面倒臭くて仕方がありません。 ````bash /home/komagata/hoge/fuga/piyo/ls ```` こんな場所に `ls` があったら面倒ですよね。試しに上記のようなディレクトリをエクスプローラーで作ってそこに `ls` をコピーしてみてください。問題無く実行できますが、入力するのがかなり面倒なはずです。 そこで「黒い画面」には PATH (パス) という超便利な機能があります。PATH は「黒い画面」に設定されている項目の一つで、ここにディレクトリ名を設定しておくと、そこの中にあるプログラムはディレクトリ名を省略してファイル名だけで実行できるようになります。 <img src="https://cacoo.com/diagrams/AZeEwWzZQGR4xqAp-D0E13.png" /> 例えば、`/usr/bin` というディレクトリは最初から PATH に設定されているので、今まで `/usr/bin/ls` と入力してきましたが、実は `ls` だけでも実行できます。 ![Image from Gyazo](https://i.gyazo.com/ba7c9dfaba11703614e2f4a6c2139d34.png) ![Image from Gyazo](https://i.gyazo.com/8cd1adbc4b36da108315d3d1598c52ca.png) `pwd` も `echo` も同じです。お気を悪くなさらないでください。PATH は飽くまで便利機能であって、「黒い画面」は所詮はプログラムのファイル名を打ち込んでいるだけなんだということをお知らせしたかったのです。 PATH のお陰で見た目上コンピューターに正に Command(指令)を送っているように見えますよね。「一覧(list)を表示しろ!」みたいに。 PATH には他にどんなディレクトリが設定されているんでしょう。これは先程の `echo` で見ることが出来ます。 ````bash $ echo $PATH ```` と打ってみてください。 ![Image from Gyazo](https://i.gyazo.com/0cd1bb083440b66f012967196b308f77.png) (出力されるないようはお使いの環境・設定によって細部は異なります) いくつかのディレクトリ名が「:(コロン)」で区切られて出てきたと思います。この:で区切られた一つ一つが全て PATH に設定されたディレクトリです。/binもちゃんとありますね。このディレクトリの中にあるプログラムはディレクトリ名を省略して打つことができます。 その前に $PATH の `$` ですがこれは何でしょう。`echo` は渡した引数を表示してくれるコマンドでした。だったら `$PATH` と表示されなければおかしいはずですよね。これは「黒い画面に `$` から始まる文字はそういう名前の設定項目の中身を表示する」という機能があるためです。`echo `も役に立ちましたね。 `$PATH` のように中身を変更できるものを変数(へんすう)と言います。英語では variable で変化するものという意味です。`$PATH` 以外にもユーザー名が入ってる `$USER`、そのユーザーのホームディレクトリが入っている `$HOME` など、色々な変数が「黒い画面」では使われています。 ![Image from Gyazo](https://i.gyazo.com/e2cfe3e3cf8fc1f8fea50733a634d051.png) <div class="tips"> <h3>環境変数</h3> <p>「黒い画面」で最初から設定されている変数のことを「環境変数(environment variable)」と言います。これらの変数には各種コマンドの動作に影響を与えるものが沢山あります(PATHもそうでした)。コマンドの実行時に影響を与える周囲の環境といったニュアンスなので環境変数というのだと思います。env(environmentの略)コマンドで環境変数の一覧を見ることが出来ます。一行に一つ、変数名と中身が=(イコール)を挟んだ形で表示されます。PATH もちゃんとありますね。他のものも `$PATH` と同様に名前の先頭に `$` を付けて `echo` コマンドで中身を出力することができます。</p> ![Image from Gyazo](https://i.gyazo.com/3dba2bcba669d36dd66072ee7b8680db.png) ![Image from Gyazo](https://i.gyazo.com/28e7c939e63dd73dae53cde6fe581490.png) 「黒い画面」は自由に文字を打ち込んで良いように見えますが、結局はプログラムのファイル名を打ち込んでいるだけです。`$PATH` を見て、そこに書いてあるディレクトリにもその打ち込んだ文字と同じファイル名のプログラムがなければエラー。ただそれだけです。(ドアラというファイルはどのディレクトリにも無いようですね...) まだ Part.02 ですが、「黒い画面」の基本的な考え方はこれに尽きます。後はこれの単なる応用だと考えてください。 それでは Part.02 はこの辺で失礼します。 ## まとめ * プログラムに文字を渡して実行することができる。 * PATH に設定されてるディレクトリは省略できる。 * 何かの設定を入れておける変数というものがある。 [「本当は怖くない黒い画面」入門(Windows \+ WSL2編) Part.3](https://bootcamp.fjord.jp/articles/22)へ続く。