Obsah
Shebang (#!)
Shebang se skládá ze znaku mřížky (hash – #) a vykřičníku (bang – !), po kterých následuje absolutní cesta k interpretu. Nachází se vždy na prvním řádku a na prvním sloupci souboru.
1. Proč je Shebang důležitý?
Bez shebangu by systém nevěděl, jak soubor spustit. Museli byste program volat ručně, například:
python3 skript.py
Pokud však skript obsahuje správný shebang a má nastavená práva ke spuštění (chmod +x), můžete ho volat přímo jako spustitelný program:
./skript.py
2. Nejčastější příklady
Podle toho, v jakém jazyce skript píšete, se liší i podoba shebangu:
| Jazyk | Shebang | Poznámka |
|---|---|---|
| Bash | #!/bin/bash | Standardní cesta k Bash shellu. |
| Python 3 | #!/usr/bin/env python3 | Doporučený způsob (najde Python v cestě PATH). |
| Perl | #!/usr/bin/perl | Tradiční cesta pro Perl skripty. |
| Node.js | #!/usr/bin/env node | Pro skripty v JavaScriptu. |
3. Konstrukce /usr/bin/env
Všimněte si rozdílu mezi #!/bin/python3 a #!/usr/bin/env python3.
Použití příkazu env je považováno za „best practice“ a je přenositelnější (portable). Různé linuxové distribuce mohou mít Python nainstalovaný v různých složkách, ale nástroj env ho vždy najde podle systémové proměnné PATH.
4. Jak to funguje pod kapotou?
Když se pokusíte spustit skript:
1. Jádro (kernel) se podívá na první dva bajty souboru. 2. Pokud uvidí magické číslo ''0x23 0x21'' (ASCII pro ''#!''), ví, že jde o skript. 3. Přečte zbytek prvního řádku a spustí uvedený interpret (např. ''/bin/bash''). 4. Původní skript mu předá jako argument.
5. Časté chyby
- Mezery nebo prázdné řádky: Shebang musí být na úplně prvním řádku. Pokud před ním bude prázdný řádek, systém ho bude ignorovat jako běžný komentář.
- Windows konce řádků (CRLF): Pokud vytvoříte skript ve Windows a nahrajete ho na Linux, shebang může selhat, protože Linux nerozumí skrytému znaku
\rna konci řádku. Interpret pak hledá program jako/bin/bash\r, který neexistuje.
Zajímavost: Název „shebang“ je pravděpodobně staženinou z „SHArp“ (mřížka) a „BANG“ (vykřičník). V hudební terminologii se mřížce říká „sharp“, v tiskovém slangu se vykřičníku říká „bang“.
