ps и /proc/$$/cmdline не показывают аргументы скрипта без shebang

Я столкнулся с поведением, которое не могу объяснить. Когда я запускаю скрипт bash без shebang, команда ps не будет показывать скрипт и его аргументы в качестве аргументов, переданных bash, также не будет /proc/$$/cmdline, тогда как если я запускаю скрипт с 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

Пример без шебанга:

# cat mytest
echo my name is $1
cat /proc/$$/cmdline
echo
ps -p $$ -o args=

# ./mytest John
my name is John
-bash
-bash

В обоих случаях сценарий будет отображать "меня зовут Джон", но без шебанга я вижу процесс bash без каких-либо аргументов. Как это возможно?

0 ответов

Другие вопросы по тегам