Lekce 5 - Bourne Advanced SHell (/bin/bash)
rozhraní uživatel - operační systém
interpret příkazového řádku
čte příkazy (z terminálu nebo ze souboru) a provádí je
interpret programovacího jazyka
editace příkazového řádku, historie příkazů,
systémové prostředí set, unset, env, export
varianty shellu
- interaktivní shell
- login shell /etc/profile, ~/.bash_profile (uživatelské proměnné) ,
~/.bash_logout
- ostatní ~/.bashrc (aliasy,funkce)
- neinteraktivní shell proměnné BASH_ENV, ENV
spuštění programu - vytvoření procesu
- .../cesta/program -přp arg1 arg2 ... , proměnná PATH, nápověda
- běh na popředí
- shell čeká na dokončení
- proces vrátí návratový kód (0=o.k., 1-125=chyba, 126=nelze spustit, 127=nenalezen, 128+n=signál)
- procesu lze zaslat signál z terminálu
- běh na pozadí, program &
- postupné spouštění: prog1;prog2;prog3
- současné spuštění: prog1|prog2|prog3, + datová roura
- prog1 && prog2 ... logické AND
- prog1 || prog2 ... logické OR
- ( seznam příkazů ) ... provedou se v kopii shellu
- { seznam příkazů; } ... provedou se v aktuálním shellu
- soubory stdin, stdout, stderr, přesměrování
zpracování příkazového řádku
- shellovské substituce (expanze)
- seznam aliasů alias, unalias
- interaktivní shell
- nedědí se (~/.bashrc)
- lze potlačit 'prog', "prog", \prog, command prog
- systémové funkceset, unset
- lze použít i ve scriptu, provede se v aktuálním shellu
- implicitně se nedědí (export -f funkce)
- lze potlačit command prog
- vnitřní příkaz shellu enable, help
- externí program
substituce (expanze) shellu
- expanze jmen (souborů), žolíkové znaky * ? [znaky] {str1,str2,...}
- expanze parametrů ${parametr}
- substituce aritmetická $[výraz] $((výraz))
- substituce výstupem příkazu `příkaz` $(příkaz)
- ...