Ubuntuでシェルスクリプト

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と出てきます。
lrwxrwxrwx 1 root root 4 Feb  2  2021 /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であれば、ファイルの一番初めに下のような
#!/usr/bin/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に シンボリックリンク されてるので、Ubuntuでは
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