Bashスクリプトがあり、bashが必要です。
別の人がそれを実行しようとします
sh script_name.sh
また、shは彼のディストリビューションのダッシュへのシンボリックリンクであるため失敗します。
$ ls -la /bin/sh
lrwxrwxrwx 1 root root 4 Aug 25 16:06 /bin/sh -> dash
ラッパースクリプトを使用するアイデアがあります。
#!/bin/sh
bash script_name.sh
目標は、ダッシュへのシンボリックリンクを持つシステムで、bashを使用してshで.shスクリプトを実行することです。
さて、通常は Shebang を使用して、シェルに正しいインタープリターを使用するように指示します。
#!/bin/bash
# your script here
スクリプトを実行可能に設定する必要があります。
chmod +x my_script.sh
そして、ユーザーにそれを開始させます:
./my_script.sh
ラッパースクリプトを使用するよりも簡単に思えます。
ユーザーがsh/dashまたはshのようなインタープリターを使用している場合でも、jbrテストを使用してbashでスクリプトを実行できます。
#!/bin/bash
if [ -z "$BASH_VERSION" ]
then
exec bash "$0" "$@"
fi
# Your script here
このように、どちらかで正しく動作します:
sh ./my_script.sh
# or
bash ./my_script.sh
# or
./my_script.sh
他の何かの前のスクリプトでは、次のようなことができます。
if [ "$BASH" != "/bin/bash" ]; then
echo "Please do ./$0"
exit 1
fi
または、より一般的な方法は$BASH_VERSION
:
if [ -z "$BASH_VERSION" ]; then
echo "Please do ./$0"
exit 1
fi