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)
 
      - ...