入門者のLinux 11章 まとめ

 

奈佐原顕郎さん「入門者のLinux」より

 

コマンドの実体

・シェルの上で走るコマンドは多くの場合それぞれが独立したソフトウェアである
・1つのコマンドに対し、ディレクトリ・ツリーのどこかにその実体(プログラムを格納した実行可能ファイル)が一つ存在する(例外もある)

コマンドの実態を調べる
which ls (lsコマンドの実体がどこにあるか調べている)

実行可能ファイル

パーミッションに実行許可が与えられているファイル
・ほとんどのコマンドの実体は

「/bin」
「/user/bin」
「/sbin」
「/user/sbin」

の4つのどれかの中にある、コマンドと同名の実行可能ファイルである

Unixのコマンドには重要度というか立ち位置的なものがある

ほとんどのLinuxが共通して持っている基本的なコマンド
/bin」「/sbin」
ディストリビューションや設定や構成によって入れたり入れなかったり
「/user/bin」「/user/sbin」

・「bin」の前に「s」が付いているディレクトリにはシステム管理にまつわるコマンドが入る(たぶんsystemのs)

シェルもコマンド

・シェルはコンピュータの上の仕組みであり、シェル自体を動かすプログラムというかコマンドがある

SHELLという名前のシェル変数の内容を調べる
echo $SHELL

・シェル変数はコンピュータを立ち上げたときに自動的に作られる
・現在ユーザーが使っているシェルがなんなのかが記録されている

いろいろなシェル

・普段使っているシェルの実態は/bin/bashである
・「/bin/bash」は「bash(バッシュ)」と呼ばれる有名なシェル
bashはもともと「bourne shell」と呼ばれるシェルから派生して生まれた

Bourne
$ sh

bourne shellではコマンドの履歴機能が使えない

bashの方が使いやすいのでbashに戻りたい
$ exit

・他にzshtcshがある
tcshbashに劣らずポピュラーで特にLinux以外のUnixで使われる

困ること

・シェルが違うと使い方がちょっと違うことがある
・ネットで調べたコマンドがうまく走らないとか、ちょっと古めのUnixのテキストに書いてあることがうまく動かないとかの原因はシェルの違いであることが多い

シェルの組み込みコマンド

which cd

・なにもでてこない(cdコマンドを走らせるための実行可能ファイルが存在しない)
bashが自分の中にcdコマンドを持っている
・cdはbashというシェルの付属品である(シェルの組み込みコマンドである)
・1つのコマンドに1つの実行可能ファイルという原則の例外である

bashの組み込みコマンドを調べる
$ help
シェルで走るコマンドには2種類ある

・独立したコマンド(実行可能ファイルを持ったコマンド)
・シェルの付属品(組み込みコマンド)

特別なシェル変数

・シェルはユーザーの好みや要望に沿えるよう多様な設定ができる

環境変数

・シェル設定などに関する情報を格納している

使用しているシェルにどのようなシェル変数があるか調べる
set | less
今開いている端末のウインドウの横幅(文字数)
COLUMNS
ホームディレクトリの絶対パスを格納する環境変数
HOME
どの言語環境か
LANG

・個々のシェル変数・環境変数の内容を表示するときはechoコマンドを使う
・シェル変数・環境変数の中身を見るときは$という記号を頭につけて指定する

コマンドサーチパス

・コマンドの実態が入っている可能性が高いディレクトリに関する情報
・「PATH」という環境変数に格納されている

コマンドサーチパスの中身を見る
echo $PATH

・いくつかの絶対パスが:で分かち書きされる

/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin

シェルは6つのディレクトリの中を順番に探して実行可能ファイルを見つける

・「/usr/local/bin」と「/usr/local/sbin」はユーザーの特殊な要望に応えるためのコマンドを入れるところ
・コマンドを普遍的なもの(どんなLinuxにも入っているコマンド)から特殊なもの(用途に応じて入れたり入れなかったりするコマンド)に段階的に分類して、順に「/bin」「/usr/bin」「/usr/local/bin」に入れておくのがUnixの文化

シェルスクリプト

・複数のコマンドをテキストファイルにまとめて実行することができる

$ vi test.sh

・ファイル名「test.sh」の拡張子「.sh」は「sh」というシェルで実行されるシェルスクリプトであるというしるしで、これはそうしなければだめなことというより習慣である

作成したファイルに実行権限を与える
$ chmod +x test.sh
実行する
./test.sh

まとめ

Unixには徹底的に設定可能・カスタマイズ可能な範囲を広くし、それをユーザーの手の届くところに広げておくというポリシーがある