0

我遇到了一种我无法解释的行为。当我在没有 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

在这两种情况下,脚本都将显示“我的名字是约翰”,但没有 shebang,我看到的 bash 进程没有任何参数。这怎么可能?

4

0 回答 0