SHEBANG #!/bin/sh

Всеки разработчик може да срещне скрипт като следния:

#!/usr/bin/python3
print("Hello world!")

На хората често се казва, че трябва да използват #!/usr/bin/python3, без дори да знаят защо. Няма разлика дали първият ред е там или не, защото Python ще третира първия ред като коментар. Комбинацията от хаштаг и удивителен знак прави нещо важно и има основателни причини, поради които разработчикът трябва да го постави на върха.

Тази статия ще обхване всички объркващи въпроси, които възникват, когато някой види shebang за първи път.

За какво се използва шебангът?

След shebang обикновено има път към интерпретатора на текущия скрипт. Пътят след shebang показва на системата какъв тип скрипт искаме да изпълним. Нека си представим, че имаме файл, наречен „hello.sh“ със съдържанието:

#!/bin/sh
echo "Hello!"

Ако го изпълним, получаваме отпечатан текст „Здравей“. След това се опитваме да премахнем shebang.

echo "Hello!"

Премахването на shebang не влияе на нищо. Системата все още може да познае, че изпълняваме shell скрипт поради края на файла. И така, какво ще се случи, ако преименуваме файла от „hello.sh“ на „hello“?

Нищо. Скриптът ще продължи да се изпълнява както по-горе, тъй като в сценарии като този, скрипт на обвивка, изборът на системата по подразбиране е.

Ами ако вместо това искаме да напишем скрипт на python?

#!/usr/bin/python3
print("Hello Python3!")

Системата ще го изпълнява като скрипт на Python, стига файлът да има разширение .py или shebang.

Ако нито един от тези два фактора не е приложим и не го изпълним с командата python, получаваме синтактична грешка. Системата иска да изпълни нашия python скрипт като shell скрипт, което не работи.

Ако командата „python“ изпълни скрипта, тогава е ясно, че ще работи, но може да не е веднага ясно за външен зрител. Може да е скрипт на Python, но тогава просто да опитате „./script_name“ в обвивката трябва да работи, ако не сте сигурни. Това е мястото, където shebang идва на мястото си. Ако разработчикът е предоставил такъв, тогава скриптът ще работи без никакви проблеми. В противен случай зрителят трябва да погледне сценария и да разбере какво прави.

Заключение

Shebang не е необходим, но винаги трябва да се среща в добре написани скриптове. Той гарантира, че системата ще го изпълни правилно, дори и без разширение на файла.