きほんてきな、ことがわかっていないんだなぁ。いい機会なので、まとめておこう。

まず、シェルについて。

シェルとは、殻だネ。卵の殻とか。

コンピュータのシェルも、卵の殻のイメージでとらえても良いとおもう。

卵の殻は中身の黄身や白身を守っている。

それと同様に、オレみたいな、うかつ者がコンピュータの中身にじかに触れられないように、コンピュータのシェルもコンピュータ中身(カーネル)を守ってくれている。

と書いてみて、ニュアンスが違うことに気づいてしまった。

シェルがコンピュータの中核を守っているのではなく、シェルを設けることで、オレみたいなものでも、コンピュータの中身に指示が出せる、

つまり、シェルはユーザーとコンピュータのあいだに入り、指示の仲立ちしてくれているんだ。

では、その、シェルをみてみよう。(Macの)ターミナルを立ち上げてみる。


シェルは、ここで打ったコマンドにしたがい、その結果を表示してくれるアプリケーションだ。

ちなみに、シェルは何種類もあり、 MacやLinux系ではbashというシェルがデフォルトになっている。

じゃ、画面にlsというコマンドを打ってみよー。


コンピュータの現状の立ち位置に存在するフォルダ一覧が表示された。

ここで疑問が生じたりして。

なぜ lsと打っただけで、その結果が表示されるんだろう。だって、lsというただの2文字だぜ。

答えを言ってしまえば、lsと打つことにより、パソコンのどこかにあるlsの実行ファイルが読み込まれるらしい。

といっても、パソコン上には、じつに様々なプログラミングがある。その中から検索/実行というのでは、いささか時間がかかってしまう。

で、ここで、役立つのがパス(道)というアイデアだ。

シェルは、パスを通じて実行ファイルのある道筋を知るわけよ。

しかもパスは、シェルにログインしたときにすでに読み込まれている(下準備ができている)。

ログインのさい。環境変数は読み込まれる。そのなかに、パスも入っているんだネ、たぶん。

ちなみに、環境変数の中のパス一覧は、echo $PATHで調べることができるし、

コマンドの存在はwhich(コマンド)で調べることができる。たとえば、which lsのように(/bin/lsと表示され、lsコマンドは/binの中にあることが確認できる)。

ついでながら、環境変数のファイルの中に、任意の環境変数を加えるときは、以下のとおり。
$ export 任意の変数名=その変数名の内容(=の前後はスペースにしない)

一方、消去するときは、
$ unset 任意の変数名

環境変数一覧
$ printenv

パスを通すには、
$ export PATH=$PATH:通したいパス

ただし、反映させるには、
souse ~/.bash_profile
とする。