jak spustit Shell skript v Linuxu [Essentials Explained for Beginners]

existují dva způsoby, jak spustit shell skript v Linuxu. Můžete použít:

bash script.sh

nebo můžete spustit skript shellu takto:

./script.sh

to je možná jednoduché, ale moc to nevysvětluje. Nebojte se, udělám nezbytné vysvětlení s příklady, abyste pochopili, proč je konkrétní syntaxe použita v daném formátu při spuštění skriptu shellu.

budu používat tento jeden řádek shell skript, aby se věci jako nekomplikované, jak je to možné:

:~/Scripts$ cat hello.sh echo "Hello World!"

Metoda 1: spuštění skriptu shellu předáním souboru jako argumentu shellu

první metoda zahrnuje předání názvu souboru skriptu jako argumentu shellu.

vzhledem k tomu, že bash je výchozí shell, můžete spustit skript, jako je tento:

bash hello.sh

znáte výhodu tohoto přístupu? Váš skript nemusí mít oprávnění k provádění. Docela užitečné pro rychlé a jednoduché úkoly.

spusťte Shell Script Linux
spuštění Shell Script Linux

pokud ještě nejste obeznámeni, doporučujeme vám přečíst si mou podrobnou příručku o oprávnění k souborům v systému Linux.

mějte na paměti, že to musí být shell skript, který předáte jako argument. Shell skript se skládá z příkazů. Pokud používáte normální textový soubor, bude si stěžovat na nesprávné příkazy.

spuštění textového souboru jako skriptu v Linuxu
spuštění textového souboru jako skriptu

v tomto přístupu jste výslovně uvedli, že chcete použít Bash jako interpret skriptu.

Shell je jen program a bash je jeho implementací. Existují i jiné takové skořápky program jako ksh, zsh, atd. Pokud máte nainstalované jiné skořápky, můžete to použít také místo bash.

například jsem nainstaloval zsh a použil jej ke spuštění stejného skriptu:

spustit Shell skript s Zsh
spustit Shell skript s Zsh

doporučené čtení:

Metoda 2: spusťte skript shellu zadáním jeho cesty

druhou metodou pro spuštění skriptu shellu je poskytnutí jeho cesty. Aby to však bylo možné, musí být váš soubor spustitelný. V opačném případě budete mít při pokusu o spuštění skriptu chybu“ oprávnění odepřeno“.

takže nejprve se musíte ujistit, že váš skript má oprávnění spustit. Příkaz chmod můžete použít k tomu, abyste si toto oprávnění udělili:

chmod u+x script.sh

jakmile je skript spustitelný, vše, co musíte udělat, je zadat název souboru spolu s jeho absolutní nebo relativní cestou. Nejčastěji jste ve stejném adresáři, takže jej používáte takto:

./script.sh

pokud nejste ve stejném adresáři jako skript, můžete určit absolutní nebo relativní cestu ke skriptu:

spuštění skriptu shellu v jiném adresáři
spuštění skriptu shellu v jiném adresáři

tohle ./ před tím, než je skript důležitý (pokud jste ve stejném adresáři jako skript)

provádění skriptů shellu Linux

proč nemůžete použít název skriptu, když jste ve stejném adresáři? Je to proto, že Vaše systémy Linux hledají spustitelné soubory pro spuštění v několika vybraných adresářích, které jsou zadány v proměnné PATH.

zde je hodnota proměnné PATH pro můj systém:

:~$ echo $PATH/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

to znamená, že jakýkoli soubor s oprávněními execute V jednom z následujících adresářů lze spustit odkudkoli v systému:

  • /domů/abhishek/.local/bin
  • /usr/local/sbin
  • /usr/local/bin
  • /usr/sbin
  • /usr/bin
  • /usr/bin
  • /sbin
  • /usr/bin
  • /usr/games
  • /snap/bin

binární soubory nebo spustitelné soubory pro příkazy Linuxu, jako jsou ls, cat atd., jsou umístěny v jednom z těchto adresářů. To je důvod, proč jste schopni spustit tyto příkazy z libovolného místa na vašem systému jen pomocí jejich jména. Příkaz ls je umístěn v adresáři/usr / bin.

umístění příkazu Linux

když zadáte skript bez absolutní nebo relativní cesty, nemůže jej najít v adresářích uvedených v proměnné PATH.

proč většina shellových skriptů obsahuje #! / bin/bash na začátku skriptů shellu?

Vzpomeňte si, jak jsem zmínil, že shell je jen program a existují různé implementace shellů.

při použití #! /bin / bash, určujete, že skript má být spuštěn s Bash jako interpret. Pokud to neuděláte a spustíte skript ./skripta.sh způsobem, to je obvykle běží s tím, co shell běžíte.

záleží na tom? Mohlo by. Většina syntaxe shellu je běžná ve všech druzích shellu, ale některé se mohou lišit.

například chování pole se liší v shellech bash a zsh. V zsh začíná index pole na 1 místo 0.

 Bash Vs Zsh
Bash Vs Zsh

Pomocí #! /bin / bash označuje, že skript je Bash shell script a měl by být spuštěn s Bash jako interpret bez ohledu na shell, který je používán v systému. Pokud používáte specifickou syntaxi zsh, můžete označit, že se jedná o skript zsh přidáním #! / bin / zsh jako první řádek skriptu.

mezera mezi #! / bin/bash na tom nezáleží. Můžete také použít #!/ bin / bash.

bylo to užitečné?

doufám, že tento článek přidal k vašim znalostem Linuxu. Pokud máte stále dotazy nebo návrhy, zanechte prosím komentář.

odborní uživatelé mohou stále nitpick tento článek o věcech, které jsem vynechal. Problém s takovými tématy pro začátečníky však spočívá v tom, že není snadné najít správnou rovnováhu informací a vyhnout se přílišnému nebo příliš malému množství podrobností.

Máte-li zájem o učení bash script, máme celou sérii Bash začátečník na naší sysadmin zaměřené webové stránky Linux Handbook. Pokud chcete, můžete si také zakoupit ebook s dalšími cvičeními na podporu Linux Handbook.

jako to, co jsi četl? Prosím, podělte se s ostatními.

50Shares
  • Facebook0
  • Twitter49
  • LinkedIn1
  • Reddit0

Leave a Reply

Napsat komentář

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