ubuntu/LinuxMintのshellのdash、組込shell変数の利用でbashとの違い

1.概要

Linuxではbash shellを利用しているケースが多いのですが、Ubuntuはdash shellを利用していると聞いたことがありました。あまり大差はないと思って気にしたこともなかったのですが、組込shell変数の利用で差異を認識したので、その内容を記述します。

2.詳細

組込shell変数の$RANDOM利用に関してです。
terminalで処理をします。

$ echo $RANDOM
12014
乱数が普通に表示されます。

これをshell scriptに変更します
test.shを作成します
#!/bin/bash
echo $RANDOM

実行します。
$ sh test.sh

結果は何も表示されません

bashを指定して実行します
/bin/bash test.sh
1521
乱数が表示されます。

shを調べてみるとdashが利用されています
$ which sh
/usr/bin/sh
$ ls /usr/bin/sh -l
lrwxrwxrwx 1 root root 4 12月 11  2024 /usr/bin/sh -> dash
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 12月 11  2024 /bin/sh -> dash
$ ls -l /bin/dash
-rwxr-xr-x 1 root root 125688  3月 23  2022 /bin/dash
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 1396520  3月 14  2024 /bin/bash

通常ならば気にすることはありませんが、差異があることは認識が必要です。

3.所見

dashの存在は知っていましたが、bashと大差なしと考えていました。偶然、shell内部で計算をする処理があり、仕様が異なることを実感しました。個人的なことですが、bashに統一されると良いと感じています。

参考

[本ブログ内参照]
rc.localを利用したubuntu/LinuxMintのPC起動時の処理実行

コメント

過去30日間に良く読まれた記事

miniPCのBMAXでWindows11のsecure boot設定漏れでトラブル発生

LinuxMint/ubuntuにWine 11導入を試しました ( LinuxMint 21.3 / 22.3 ubuntu 22.04 / 26.04 Wine 11.0 / 11.6 / 11.8 / 11.13 )

Windows95/98のPCゲームをUbuntu/LinuxMintの最新PCで楽しむ方法 ( KVM / Wine / dosbox-x / midi )