-->

Ubuntuでシェルスクリプト、シェルの種類と特徴

Ubuntuでシェルスクリプト、シェルの種類と特徴
シェルは歴史が深くて調べれば調べるほどよく分からなくなってきます。
現時点で分かってる事をメモ。

シェルについて

シェルの種類

シェルには沢山の種類があります。
一番初めに作られたのが
 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コマンドの参照先を見てみる。
Copy Code

which sh

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

ls -l /usr/bin/sh
結果は下のようにdashと出てきます。
Copy Code

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を使ってるのでコマンドは下の通り。
Copy Code

sudo vi test.sh
上のコマンドを打つと、新しくtest.shを作成すると共にviでそのファイルを開きます。

bashであれば、ファイルの一番初めに下のような
 #!/usr/bin/bash 
コードを打ち、bashファイルであることを示す必要があります。
Copy Code

#!/usr/bin/bash
ですが今回はdashで作るのでこのコードは省略。

今回はtest.shの中に下のようなecho処理を一行書きます。
Copy Code

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 
は全く同じ意味になります。
上のどちらかのコマンドを実行すると、結果は次の通りになります。
Copy Code

$aaa
bbb
$がしっかりechoに表示され、¥nによる改行も行われています。

続いて
 bash test.sh 
を実行すると次の通り。
Copy Code

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

続いて
 source test.sh 
を実行すると次の通り。
Copy Code

aaa¥bbb
結果からみると、
 bash test.sh 
と実行結果が一緒なので、
 source test.sh 
は
 bash test.sh 
と同じ意味と思われます。
0
0