Co je #! / Bin / bash ve skriptování prostředí? Jaký je rozdíl mezi / bin / sh a / bin / bash? Proč někdy shell pracuje bez řádků?


Nejlepší odpověď

#!/bin/bash

Toto je známé jako shebang, říká tlumočníkovi, že následující řádky jsou psány pro bash, proto spusťte tento soubor jako bash skript.

#Example: Scripts are usually executed like below:

./scriptName

Takže shebang určuje, jak interpretovat skript, někdy to může být následující:

#!/bin/sh

#!//usr/bin/perl

#!/usr/bin/python

#!/bin/bash

#!/bin/ksh

Tyto řádky tedy určují, jak mají skripty fungovat být interpretován a popraven. nyní přichází na stránku Proč /bin/sh?

Ukazuje na jeden z nakonfigurovaných prostředí, někdy sh ukazuje na bash, někdy nějaký jiný shell jako cshell, dash,zsh ,ksh atd.

Příklad:

#case-1:

ls -lrt /bin/sh

lrwxrwxrwx 1 root root 4 Feb 19 2014 /bin/sh -> dash

#case-2

ls -lrt /bin/sh

lrwxrwxrwx 1 root root 4 Jul 12 2017 /bin/sh -> bash

Takže pokud ve skriptu používáte #!/bin/sh, chování vašeho skriptu se bude lišit podle toho, který shell sh ukazuje na váš systém. Shebang můžete přepsat spuštěním skriptu jako:

bash scriptName

#or

sh scriptName

Ve výše uvedených dvou případech nebude mít shebang vliv na provedení a bude to provedeno bash a sh (na to ukazuje shell).

Odpověď

No, přesně, jak fungují, má mnoho úrovní podrobností, takže zde budeme docela nepřesní. Všechny programy jsou prováděny vložením jejich kódu do konkrétní vyhrazené části paměti a poté vyvoláním vstupního bodu tohoto obrázku kódu v paměti. Poté program pouze běží.

Úkon vložení obrazového kódu do paměti provádí operační systém a nazývá se to „spuštění“ nebo spuštění programu. OS to dělá z vlastní iniciativy pouze jednou; v době spuštění při spuštění procesu init . Proces init a jeho potomci požádají OS o spuštění dalších procesů vyvoláním exec Systémové volání OS.

Shell je najednou speciální a také obyčejný. Je to jen další program, který běží, jako každý jiný. Nemá žádné zvláštní supervelmoci ani speciální vlastnosti. Účelem je umožnit uživateli přístup ke službám operačního systému, zejména pro spouštění dalších programů, které uživatel určí. Poskytuje metody přístupné uživateli, které uživateli umožňují přístup k souborovému systému, a specifikovat, jak se používají některé standardní toky datové komunikace ( stdin , stdout a stderr ).

Skořápky poskytují programovací jazyk, který lze použít k dělat věci automatizovanými způsoby, rozhodovat a iterovat, kvůli efektivitě, a tak mohou pracovat bez interakce uživatele. Poskytují a používají speciální syntaxi a zápis, který se musí uživatel naučit a použít k vyvolání programovacího jazyka a zpracování příkazového řádku. Zpracování příkazů prostředí může pocházet z interaktivního terminálu nebo z textových souborů obsahujících skripty.

Programy, které prostředí spouští, se nazývají podřízené procesy prostředí. Jakýkoli proces může spustit jiný proces, takže prostředí není v tomto smyslu zvláštní. Prostředí je optimalizováno tak, aby uživateli umožnilo určit, jak má spouštět své podřízené procesy. Heirarchii všech procesů na hostiteli Linux můžete zobrazit pomocí příkazu

ps -e lf

Někde v seznamu najdete samotný proces „ ps a zobrazí se jako podřízený proces procesu prostředí, který jste použili k jeho spuštění.

Tam jsou mnohem více podrobností; příliš mnoho na to, abychom na ně odpověděli Quora.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *