Uživatelské nástroje

Nástroje pro tento web


shebang

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 \r na 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“.

Zpět na Linux

shebang.txt · Poslední úprava: autor: admin