シェルって? | のんびりした人の日記

のんびりした人の日記

仕事の愚痴とアニメ関連のことを書いていきます。

結構自分でもX端末を自由に操作できるようになってきました。
んで、現在自分が参考書としている「新Linux/UNIX入門」ではついにシェルについての勉強に突入しました。話、、、というか本とかでは結構目にすることは多かったのですが、実際にはどんなもんかということは全くと言っていいほど知らなかったです。唯一「シェルスクリプトという言葉だけは聞いたことがある」ぐらいです。


まず、UNIXのOSの中心になる基本的な機能を備えているものをカーネルといいます。カーネルはkernel(核)というらしいです。英和辞書で調べたらトウモロコシの実という意味もあるらしいですww
このカーネルというものが備えている基本的な機能というのは、プロセス管理、メモリー管理、ファイルシステムです。
このような機能をユーザーが直接操作するのは不便だ、と書いてあるのですが自分の感覚ではよくわかりません。けど、上記の基本機能を自分で操作して管理するというのは結構面倒な感じがするのはわかる気がします。
そんなわけで、カーネルと私たちユーザーの橋渡しをしてくれるのが「シェル」ということらしいです。
イメージとしては、コンパイラとかそこらへんなのでしょうかね。「コンピューターは機械語しか理解できないが、ユーザーは機械語を理解できない。なので、ユーザーが書いたプログラムを機械語に翻訳してコンピューターに実行してもらう」ということと似ている感じがするのですが。コンパイラについてとか勉強をしたことがないので厳密にはよくわからないのですが、これもコンパイラを通してコンピューターとユーザーが「対話している」ということなのでは?ってなわけでこのイメージでいきたいと思います。
まぁ、そんなこんなでシェルというのはユーザーが入力したコマンドを通訳してカーネルに渡すという仕事をします。この仕事をシェルがしてくれているおかげで、リダイレクトやエイリアス等の機能をユーザーが使うことができるのです。


具体的なシェルの機能というのは①ユーザーインターフェース機能と②プログラミング機能というものです。・・・・が具体的にどのような機能かを分けて書いていないので、これも自分流に。
取り合えず簡単に言ってしまうと「自分にとって便利だと思う機能があるとしたら、それを工夫して自分だけのオリジナルの機能を作ることができる。また、そのオリジナルの機能を作る際には、シェルをプログラムとしてつかいその機能を実装する」といった感じでしょうか。自分だけの機能を、シェルを使って実現できるということですよね。けどこのシェルをプログラムとして使う(シェルプログラム)ときにはまたプログラミングの勉強しないといけない感じなんでしょうかね。んで補足ですが、シェルプログラムで記述したテキストファイルのことをシェルスクリプトというそうです。


これで自分の悩みがだいたい解消されました。まだまだシェルについては疑問符のつくところが多いですが、これからの勉強でそれを少しずつ解消していければと思います。