Çalıştırır, çünkü varsayılan çalıştırılabilir dosyanın / bin / sh script olduğu varsayılır. Yani, belirli bir kabuk belirtmediyseniz - bu #! / Bin / sh şeklindedir.
// sadece yollarda yoksayılır - tek olarak '/' olarak düşünebilirsiniz.
Böylece ilk satırda kabuk betiğiniz olduğunu düşünebilirsiniz:
/usr/bin/env go run $0 $@ ; exit
Bu hat ne işe yarıyor? Paramenter ile 'env' çalışır 'git 0 $ @'. orada 'go' komutu ve '$ 0 $ @' run args ve daha sonra betiğinden çıkar. $ 0 bu betiğin adı. $ @, orijinal script argümanlarıdır. Yani bu satır gider, bu betiği kendi argümanları ile çalıştırır.
Yorumlarda da belirtildiği gibi, iki eğik çizginin uygulama tarafından tanımlandığını ve üç ya da daha fazla eğik çizgi belirtirse, bu komut dosyası POSIX için doğru olur. Eğik çizgilerin yollarda nasıl işlenmesi gerektiği hakkında ayrıntılı bilgi için http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html adresine bakın .
Ayrıca, $ @ betiğinde başka bir hata olduğunu unutmayın; bunun yerine "$ @" kullanmak doğrudur, aksi halde herhangi bir parametre boşluk içeriyorsa birçok parametreye bölünür. Örneğin, "$ @" kullanmıyorsanız dosya adını boşluklarla geçiremezsiniz.
Bu özel senaryo açıkça '//' nin '/' değerine eşit olduğu fikrine dayanıyor.
//&>/dev/null;x="${0%.*}";[ ! "$x" -ot "$0" ]||(rm -f "$x";cc -o "$x" "$0")&&exec "$x" "$@"
...