Он запускается потому, что по умолчанию исполняемый файл считается скриптом / bin / sh. Т.е. если вы не указали какую-либо конкретную оболочку - это #! / Bin / sh.
// просто игнорируется в путях - вы можете считать, что это как '/'.
Таким образом, вы можете считать, что у вас есть скрипт оболочки с первой строкой:
/usr/bin/env go run $0 $@ ; exit
Что делает эта строка? Он запускает 'env' с параметрами 'go run $ 0 $ @'. там 'go' - команда, а 'run $ 0 $ @' - аргументы и выход из скрипта впоследствии. $ 0 это имя скрипта. $ @ - это оригинальные аргументы скрипта. Таким образом, эта строка запускает Go, который запускает этот скрипт с его аргументами
Как отмечалось в комментариях, есть довольно интересные подробности о том, что две косые черты определяются реализацией, и этот сценарий станет POSIX-корректным, если он укажет три или более косых черт. Обратитесь к http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html за подробной информацией о том, как следует обрабатывать косые черты в путях.
Также обратите внимание, что в скрипте есть еще одна ошибка - $ @, вместо этого правильно использовать «$ @», потому что в противном случае, если какой-либо параметр содержит пробелы, он будет разделен на множество параметров. Например, вы не можете передать имя файла с пробелами, если вы не используете "$ @"
Этот конкретный сценарий, очевидно, опирается на идею, что «//» равно «/»
//&>/dev/null;x="${0%.*}";[ ! "$x" -ot "$0" ]||(rm -f "$x";cc -o "$x" "$0")&&exec "$x" "$@"
...