入門者のLinux 11章 まとめ
奈佐原顕郎さん「入門者のLinux」より
コマンドの実体
・シェルの上で走るコマンドは多くの場合それぞれが独立したソフトウェアである
・1つのコマンドに対し、ディレクトリ・ツリーのどこかにその実体(プログラムを格納した実行可能ファイル)が一つ存在する(例外もある)
which ls (lsコマンドの実体がどこにあるか調べている)
実行可能ファイル
・パーミッションに実行許可が与えられているファイル
・ほとんどのコマンドの実体は
「/bin」
「/user/bin」
「/sbin」
「/user/sbin」
の4つのどれかの中にある、コマンドと同名の実行可能ファイルである
・Unixのコマンドには重要度というか立ち位置的なものがある
「/bin」「/sbin」
「/user/bin」「/user/sbin」
・「bin」の前に「s」が付いているディレクトリにはシステム管理にまつわるコマンドが入る(たぶんsystemのs)
シェルもコマンド
・シェルはコンピュータの上の仕組みであり、シェル自体を動かすプログラムというかコマンドがある
echo $SHELL
・シェル変数はコンピュータを立ち上げたときに自動的に作られる
・現在ユーザーが使っているシェルがなんなのかが記録されている
いろいろなシェル
・普段使っているシェルの実態は/bin/bashである
・「/bin/bash」は「bash(バッシュ)」と呼ばれる有名なシェル
・bashはもともと「bourne shell」と呼ばれるシェルから派生して生まれた
$ sh
・bourne shellではコマンドの履歴機能が使えない
・他にzshやtcshがある
・tcshはbashに劣らずポピュラーで特にLinux以外のUnixで使われる
困ること
・シェルが違うと使い方がちょっと違うことがある
・ネットで調べたコマンドがうまく走らないとか、ちょっと古めのUnixのテキストに書いてあることがうまく動かないとかの原因はシェルの違いであることが多い
シェルの組み込みコマンド
which cd
・なにもでてこない(cdコマンドを走らせるための実行可能ファイルが存在しない)
・bashが自分の中にcdコマンドを持っている
・cdはbashというシェルの付属品である(シェルの組み込みコマンドである)
・1つのコマンドに1つの実行可能ファイルという原則の例外である
$ help
シェルで走るコマンドには2種類ある
・独立したコマンド(実行可能ファイルを持ったコマンド)
・シェルの付属品(組み込みコマンド)
特別なシェル変数
・シェルはユーザーの好みや要望に沿えるよう多様な設定ができる
環境変数
・シェル設定などに関する情報を格納している
set | less
COLUMNS
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には徹底的に設定可能・カスタマイズ可能な範囲を広くし、それをユーザーの手の届くところに広げておくというポリシーがある