説明できない行動に出くわしました。シバンなしで bash スクリプトを実行すると、ps コマンドはスクリプトとその引数を bash に渡された引数として表示せず、/proc/$$/cmdline も表示しませんが、シバンを使用してスクリプトを実行すると、動作は次のようになります。期待される。
シバンの例:
# cat mytest
#!/bin/bash
echo my name is $1
cat /proc/$$/cmdline
echo
ps -p $$ -o args=
# ./mytest John
my name is John
/bin/bash./mytestJohn
/bin/bash ./mytest John
シバンなしの例:
# cat mytest
echo my name is $1
cat /proc/$$/cmdline
echo
ps -p $$ -o args=
# ./mytest John
my name is John
-bash
-bash
どちらの場合も、スクリプトは「私の名前はジョンです」と表示しますが、シバンがないと、引数なしで bash プロセスが表示されます。これはどのように可能ですか?