きほんてきな、ことがわかっていないんだなぁ。いい機会なので、まとめておこう。
まず、シェルについて。
シェルとは、殻だネ。卵の殻とか。
コンピュータのシェルも、卵の殻のイメージでとらえても良いとおもう。
卵の殻は中身の黄身や白身を守っている。
それと同様に、オレみたいな、うかつ者がコンピュータの中身にじかに触れられないように、コンピュータのシェルもコンピュータ中身(カーネル)を守ってくれている。
と書いてみて、ニュアンスが違うことに気づいてしまった。
シェルがコンピュータの中核を守っているのではなく、シェルを設けることで、オレみたいなものでも、コンピュータの中身に指示が出せる、
つまり、シェルはユーザーとコンピュータのあいだに入り、指示の仲立ちしてくれているんだ。
では、その、シェルをみてみよう。(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
とする。