普通にはシェルスクリプトを Shebang (シェバング? シバン?)に書くことはできません。
/tmp/a.sh
# !/bin/bash
echo "my name is a"
echo "args is $@"
/tmp/b.sh
# !/tmp/a.sh
echo "my name is b"
echo "args is $@"
b.sh の Shebang に /tmp/a.sh
と書いているので a.sh が実行されることを期待していますが、実際には b.sh が /bin/bash
で実行されます。
$ chmod +x a.sh b.sh
$ /tmp/b.sh 1 2 3
my name is b
args is 1 2 3
b.sh の Shebang を /usr/bin/env /tmp/a.sh
などとしてやればOKです。
/tmp/b.sh
# !/usr/bin/env /tmp/a.sh
echo "my name is b"
echo "args is $@"
$ chmod +x a.sh b.sh
$ /tmp/b.sh 1 2 3
my name is a
args is /tmp/b.sh 1 2 3
最近よく見る /usr/bin/env ruby
のような記述は単にインタプリタのインストール先が PATH さえ通っていればどこでも良いようにするためのものかと思っていましたが、こういう効果もあるんですね。