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ábashanalyzovat soubor.#!/usr/bin/env perl- Používáenvpříkaz k nalezení cesty kperlspustitelný.#!/usr/bin/pythonSpustí soubor pomocípythonbiná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í
envná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ář.