-100p

-10p

+10p

+100p

Ubuntuでシェルスクリプト

シェルの種類と特徴。
Ubuntuでシェルスクリプトの作成と実行。

関連ページ 参考URL
シェルは歴史が深くて何か調べれば調べるほどよく分からなくなってくる。
現時点で分かってる事をメモ。

シェルについて

シェルの種類

シェルには沢山の種類がある。
一番初めに作られたのがshで、そこからksh、bash、dash、zsh、またはcsh、tcshなどが作られてきた。
現状最も市民権を得ているのがbash。これはMacでもWindowsでもLinuxでも使うことができる。

sh、ksh、bash、dash、zshのシェルをsh系シェルと言い、これらのシェルスクリプトは.shが拡張子となる。
csh、tcshのシェルをcsh系シェルと言い、これらのシェルスクリプトは.cshが拡張子となる。

基本sh以降に作られた全てのシェルは、shの機能を全て含んでいる。
shに出来てそれ以外のシェルで出来ないことは無い。

Ubutnuのシェル

Ubuntuが標準で指定しているシェルはdashで、マイナーなシェルとなっている。
確認方法として、まずwhichでshコマンドの参照先を見てみる。
which sh

すると/usr/bin/shというファイルが出てくるので、今度はls -lコマンドで対象ファイルの詳細を表示。
ls -l /usr/bin/sh
結果はdashと出てくる。

どうも色々調べてみると、dashはbashに比べて軽量だが、人間が操作するにはとても不便らしい。
UbuntuもLinuxの一派に過ぎないので、勿論シェルはdashだけでなくbashも使える。
スピードのdashか、分かりやすさのbashかという使い分けになると思う。

Ubuntuでシェルスクリプトのテスト

今回は単純なことしかやらないのでbashではdashで作っていく。
適当な方法で拡張子が.shのファイルを作成する。自分はviを使ってるのでコマンドは下の通り。
sudo vi test.sh
上のコマンドを打つと、新しくtest.shを作成すると共にviでそのファイルを開く。

bashであれば、ファイルの一番初めに下のようなコードを打ち、bashファイルであることを示す必要がある。
#!/usr/bin/bash
だが今回はdashで作るのでこのコードは省略。

今回はtest.shの中に下のようなecho処理を一行書く。
echo $"aaa¥nbbb"
ESCから:wqでファイルを保存して閉じる。

bashとdashが内臓されてるUbuntuでは、シェルスクリプトの呼び方が4種類ある。
以下その一覧。
sh test.sh
dash test.sh
bash test.sh
source test.sh

shコマンドがdashにシンボリックリンクされてるので、sh test.shとdash test.shは全く同じ意味になる。
実行結果は次の通り。
$aaa
bbb
$がしっかりechoに表示され、¥nによる改行も行われている。

続いてbash test.shを実行すると次の通り。
aaa¥bbb
$がechoの表示から外され、改行コードはそのまま文字列として表れている。
このように表示に違いが出てくるのは、bashとdashでコードの解釈が異なるため。

続いてsource test.shを実行すると次の通り。
aaa¥bbb
bash test.shと実行結果が一緒なので、source test.shはbash test.shと同じ意味と思われる。
0
0

-100p

-10p

+10p

+100p