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](https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/run-a-shell-script-linux.png?w=741&ssl=1)
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](https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/running-text-file-as-script.png?w=741&ssl=1)
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](https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/execute-shell-script-with-zsh.png?w=741&ssl=1)
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](https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/01/running-shell-script-in-other-directory.png?w=795&ssl=1)
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](https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/executing-shell-scripts-linux.png?w=800&ssl=1)
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](https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/01/locating-command-linux.png?w=795&ssl=1)
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](https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/01/bash-vs-zsh.png?w=795&ssl=1)
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.
- Facebook0
- Twitter49
- LinkedIn1
- Reddit0