jaký je rozdíl mezi #!/ bin / sh a #!/ bin / bash?

na Linuxu a dalších unixových systémech máte na výběr z více shellů.

shell je zodpovědný nejen pro kreslení trochu výzva, ale tlumočení vaše příkazy, zvláště pokud jste dal ve složité logiku, jako potrubí, podmiňovací způsob, a tak dále.

bash je nejběžnější shell používaný jako výchozí shell pro uživatele systémů Linux. Je to duchovní potomek jiných shellů používaných v celé historii Unixu. Jeho jméno, bash je zkratka Bourne-Again Shell, pocta Bourne shell, který byl navržen tak, aby nahradil, i když také obsahuje funkce Z C Shell a Korn Shell.

je spuštěn v těchto dnech od /bin/bash – jakýkoli systém s bash bude mít přístup zde.

nejsou to jen uživatelé, kteří používají Shelly. Skripty (shell skripty) potřebují Shelly, aby je interpretovaly. Při spuštění skriptu shellu musí váš systém spustit proces shellu, aby mohl skript spustit.

problém je, že různé Shelly mají mezi sebou malé nesrovnalosti, a pokud jde o spouštění skriptů, mohou to být skutečný problém. bash má spoustu skriptovacích funkcí, které jsou jedinečné pouze pro bash, a nikoli pro jiné skořápky. To je v pořádku, pokud budete vždy používat bash ke spuštění těchto skriptů. Ostatní granáty se mohou pokusit buď napodobit bash, nebo se držet standardu POSIX, který bash podporuje docela dobře (i když přidává vlastní rozšíření).

je možné zadat v horní části skript, který shell je třeba spustit s pomocí shebang. Skript může zadat #!/bin/bash na prvním řádku, což znamená, že skript by měl být vždy spuštěn s bash, spíše než s jiným shellem.

/ bin / sh je spustitelný soubor představující systémový shell. Ve skutečnosti je obvykle implementován jako symbolický odkaz směřující k spustitelnému souboru pro kterýkoli shell je systémový shell. Systémový shell je druh výchozího shellu, který by měly používat systémové skripty. V distribucích Linuxu to bylo po dlouhou dobu obvykle symbolické spojení s bash, natolik, že se stalo poněkud konvencí vždy propojit / bin / sh s bash nebo shell kompatibilní s bash. Nicméně, v posledních několika letech Debian (a Ubuntu) se rozhodli změnit systém shell z bashe na dash – podobné shell – lámání s dlouhou tradicí v Linuxu (GNU) pomocí bash /bin/sh. Dash je považován za lehčí a mnohem rychlejší shell, který může být prospěšný pro rychlost spouštění (a další věci, které vyžadují mnoho skriptů shellu, jako jsou instalační skripty balíčku).

Dash je poměrně dobře kompatibilní s bash, je založen na stejném standardu POSIX. Neimplementuje však rozšíření specifická pro bash. Existují skripty, které používají #!/bin/sh (systémový shell) jako svůj shebang, ale které vyžadují rozšíření specifická pro bash. To je v současné době považováno za chybu, která by měla být opravena Debianem a Ubuntu, kteří vyžadují /bin / sh, aby mohli pracovat, když poukázali na dash.

přestože systémový shell Ubuntu ukazuje na dash, váš přihlašovací shell jako uživatel je v tuto chvíli stále bash. To znamená, že když se přihlásíte do emulátoru terminálu kdekoli v Linuxu, váš přihlašovací shell bude bash. Rychlost provozu není tak velký problém, když je shell používán interaktivně, a uživatelé jsou obeznámeni s bash (a mohou mít Bash specifické úpravy ve svém domovském adresáři).

co byste měli použít při psaní skriptů

pokud váš skript vyžaduje funkce podporované pouze bash, použijte #!/bin/bash.

ale pokud je to možné, bylo by dobré se ujistit, že váš skript je kompatibilní s POSIX, a použít #!/bin/sh, což by mělo vždy, zcela spolehlivě, ukazovat na preferovaný systémový shell kompatibilní s POSIX v jakékoli instalaci.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.