シェル (shell) is 何

シェルはユーザがカーネルに命令するためのソフトウェアです。カーネルはハードウェアに命令するためのOSを構成するソフトウェアの一部です。

例えばユーザはSSDにシェルを通じてファイルを保存するという命令をカーネルに出します。カーネルはシェルから受け取った情報を元にSSDにファイル保存した後、成功したことをシェルに通知します。ユーザはディスプレイに表示されたシェル(通知)を見ることで結果(成功 or 失敗)を確認できます。

カーネルってなんのためにいるの?

こちらの記事をどうぞ

シェルの種類

- Bourne Shell (sh)
- Bourne-Again shell (bash)
- C Shell (csh)

シェルの一覧はみんな大好きwikipediaへ

コマンドラインシェルの一覧
https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%AB#%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%B7%E3%82%A7%E3%83%AB%E3%81%AE%E4%B8%80%E8%A6%A7

コマンドプロンプト

シェルの画面に表示される「$」や「#」などコマンド入力待ち状態であることを表す記号のことです。(Windowsにはコマンドプロンプト[cmd.exe]という名前の端末があります。ややこしい名前をつけないでほしい)

$は一般ユーザを表すことが多い
#はルートユーザを表すことが多い

入力するコマンドには次の2つがあります。

- 組み込みコマンド
- 外部コマンド

組み込みコマンド

シェル内部に組み込まれているコマンドです。cd や echoがあります。
/bin/bash のバイナリデータに組み込まれています。

外部コマンド

/usr/bin/, /usr/sbin 配下に置かれているコマンドです。環境変数のPATHに場所(/usr/bin/, /usr/sbin )を登録ことでシェルから外部コマンドを探すことができます。

$ ls /usr/bin/
(一部抜粋)
cat pgrep
cd php
chmod pip
$ ls /usr/sbin/
(一部抜粋)
halt sshd-keygen
hardlink start-statd
httpd

cdやcatなど普段使用しているコマンドも外部コマンドです。

環境変数を確認
$ printenv | grep sbin
PATH=/usr/bin:/usr/sbin

 ":"は区切り文字です。環境変数の"PATH"に/usr/bin と /usr/sbin が指定されてます。

外部コマンドは環境変数PATHに場所(/usr/bin/, /usr/sbin )を登録する必要があるといいました。つまり環境変数PATHから/usr/bin/, /usr/sbin を削除すると使えません。

## catコマンドは外部変数です。
$ ls /usr/bin/cat
/usr/bin/cat

##環境変数 PATH自体を削除します。/usr/bin/, /usr/sbin の登録が消えます
$ unset PATH 
$ cat test
-bash: cat: No such file or directory

##外部コマンドである cat コマンドが使えなくなりました。

##再び環境変数 PATHを設定します。
$ PATH=/usr/bin:usr/sbin ##シェル変数 PATHに値を登録
$ export PATH  ##環境変数 PATHを登録
$ cat test
1

##無事catコマンドが使えるようになりました。

ちなみにデフォルトではルートユーザのみ、環境変数PATHにusr/sbinは設定されていることが多いです。つまりusr/sbinにあるコマンドはルート権限が必要です。

変数の種類

先ほどシェル変数という言葉がしれっと出てきました。シェル変数で定義した値は当該シェルでしか使えません。一方で環境変数で定義した値はシェルの子プロセスでも使用できます。つまりシェルがアプリケーションを起動すればアプリケーション内で環境変数を使用できます。

この記事が気に入ったらサポートをしてみませんか?