Pokud se učíte skriptování Bash čtením kódu jiných lidí, možná jste si všimli, že první řádek ve skriptech začíná znakem #!
znaky a cestu k interpretu Bash.
Tato sekvence znaků (#!
) se nazývá shebang a používá se k tomu, aby řekl operačnímu systému, který interpret má použít k analýze zbytku souboru.
Směrnice pro tlumočníky Shebang #
Direktiva interpreta Shebang má následující podobu:
#!interpreter [arguments]
- Směrnice musí být na prvním řádku skriptu.
- Směrnice musí začínat shebang
#!
- Bílá mezera za znaky shebang je volitelná.
- Interpret je úplná cesta k binárnímu souboru (např.:
/bin/sh
,/bin/bash
). - Argumenty tlumočníka jsou volitelné.
Příklady:
#!/bin/bash
- Používábash
analyzovat soubor.#!/usr/bin/env perl
- Používáenv
příkaz k nalezení cesty kperl
spustitelný.#!/usr/bin/python
Spustí soubor pomocípython
binární.
Použití Shebang ve skriptech Bash #
Pokud není zadán shebang a uživatel spouštějící Bash skript používá jiný Shell, bude skript analyzován jakýmkoliv výchozím interpretem, který daný Shell používá. Například výchozí interpret pro bash
je bash
a pro zsh
je sh
. Abyste zajistili, že váš skript bude vždy interpretován pomocí Bash, budete muset zadat cestu ke spustitelnému souboru pomocí shebang.
Existují dva způsoby, jak použít direktivu Shebang a nastavit interpret.
-
Použití absolutní cesty k binárnímu bash:
#!/bin/bash
-
Pomocí
env
nástroj:#!/usr/bin/env bash
Výhodou použití druhého přístupu je, že bude hledat bash
spustitelný v $PATH
uživatele environmentální proměnná. Pokud existuje více než jedna cesta k bash
, skript použije první z nich.
Když použijete první možnost k přidání možnosti do nabídky prostředí Bash, předejte ji interpretovi. Například ke spuštění skriptu v režimu ladění byste použili #!/bin/bash -x
.Pokud používáte env
pak musíte použít set
prohlásit opci. Chcete-li povolit režim ladění, přidejte set -x
po linii shebang.
Ukázkový skript #
Vytvořme jednoduchý skript pomocí shebang, který vypíše „Hello, World“. Otevřete textový editor a vložte následující řádek:
nano hello_world
hello_world#!/bin/bash
echo "Hello, World"
Abyste mohli skript spustit bez zadání interpretu z příkazového řádku, musíte soubor nastavit jako spustitelný:
chmod +x hello_world
Nyní, pokud můžete skript spustit zadáním ./
následovaný názvem skriptu:
./hello_world
Hello, World
Překonání Shebang #
Pokud z nějakého důvodu chcete přepsat interpret nastavený v řádku Shebang, musíte skript spustit tak, že výslovně specifikujete požadovaný shell.
Například ke spuštění skriptu, který má #!/bin/sh
specifikované v řádku Shebang pomocí bash
shell byste napsali:
bash hello_world
Vezměte prosím na vědomí, že není dobrý nápad přepsat interpret shellu, protože to může vést k neočekávanému chování skriptu.
Závěr č.
Nyní byste měli dobře rozumět tomu, co je Shebang a jak jej používat ve skriptech Bash.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.