我遇到了一个我无法解释的行为。当我运行一个没有shebang的bash脚本时,ps命令不会显示脚本及其参数作为参数传递给bash,也不会显示/ proc / $$ / cmdline,而如果我用shebang运行脚本,行为就是预期
shebang的例子:
# 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
没有shebang的例子:
# cat mytest
echo my name is $1
cat /proc/$$/cmdline
echo
ps -p $$ -o args=
# ./mytest John
my name is John
-bash
-bash
在这两种情况下,脚本都会显示“我的名字是John”,但是如果没有shebang,我会看到没有任何参数的bash进程。这怎么可能?