(教材)05【シェル入門】
■1.カーネルとシェル
UnixをはじめWindowsやMacOSといった多機能なOSには「シェル」と「カーネル」という概念がある.
https://gyazo.com/28d3814ecb036223842e35337a7dabfb
カーネルはOSの中核をなすプログラムだ.カーネルはPCに接続されたデバイスを認識し,アプリケーションがデバイスを使えるようにしたり,ユーザの認証を行ったり,ユーザがプログラミングの際に必要な機能 (システムコール) を提供する.多くのUnix系OSはオープンソースなので,カーネルそのものを自PC向けに書き換えて再コンパイルすることも可能である.
カーネルを書き換えたり直接アクセスするようなプログラミングには当然,システムコールやデバイスドライバなどの知識が必要である.
シェルはカーネルとユーザとの橋渡しをする.ls や cp などの「コマンド」を受け付けて, それをカーネルに渡す.
すでに学んだパイプやリダイレクションもシェルの機能である.
"alias" や "foreach" など,シェル自身も内部コマンドを持つ.これらを使って個別のコマンドを組み合わせたスクリプトを作成できる.
システムにとってはシェルがユーザーインタフェースそのものだと言える.
実際,本実習で利用しているUbuntu/MacOSの「端末」で様々なコマンドを入力してきたが, それはすべてシェルを介している.
※シェルを確認する ※
$ ps▼ と入力すると現在自分の権限で実行しているプログラムのプロセスが 表示される.この中でシェルが走っていることを確認しよう ( bash ) .
code:▼はEnter,■はプロンプト
$ ps▼
PID TTY TIME CMD
8 tty1 00:00:00 bash ◀◀ これがシェル(bash)
26 tty1 00:00:00 ps
$■
ここでは,デフォルト ( 初期状態 ) のログインシェルである,bash について学ぶことにする.
※ちなみにUnixではこのシェルを別のシェル(zsh,tcsh等)に切り替えて利用できる.(今回は紹介しない)
■2.シェルを理解する
教科書 第9章「シェルを理解する」( p.127~p.147 ) のうち,
9-1「シェルとは」,
9-2「シェル変数と環境設定 ( Bシェル編 ) 」,
9-4「特殊記号でファイルを探す」
を読んで,中の例題を実際に入力し,順に確かめよう.
★シェルの豆知識★
bash (バッシュ) の原型はBシェル (Bourne shell:ボーン氏が開発したボーンシェル) と呼ばれ, コマンド名は "sh" だった.sh のクローン版として機能を拡張して開発されたのが bash (Bourne-Again shell:"bone"と掛けた言葉遊び) .
シェルはbashのほかにもいろいろある.
実際に他のシェルをインストールして切り替えて使ってもよい.
多くのシェルは Ctrl+Dで終了するが,できない場合は,"exit"を使う.
教科書のSTEP3 ( Cシェル編 ) はやらなくてよいが,違うシェルを経験することもお勧めする.ただしCシェルは現在,"tcsh"がその後継として多く利用されている.tcshをインストールして使ってみるのもよかろう.
(藤井は"tcsh" 愛用者)
このシェルの部分を学べば,教科書「ゼロからわかる Unix基礎講座」 の内容はほぼ終了したことになる.
以上.
2023/7/5