Portál AbcLinuxu, 11. května 2025 10:24

Dotaz: Rozdíl mezi shel a bash

26.10.2017 14:58 Martina
Rozdíl mezi shel a bash
Přečteno: 862×
Odpovědět | Admin
Ahoj, může mi někdo poradit jaký je rozdíl mezi programováním v shelu a v bashi? Hledám nějake informace v češtině pro začátečníky ale nic moc jsem nenašla. Děkuji M.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Vladimír Čunát)
26.10.2017 15:09 NN
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
Shell = prikazovy interpret, konzole. Bash - Bourne Again Shell, je jeden z mnoha "shellu", jako napriklad sh,zsh,ksh..
26.10.2017 21:27 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash

konzole != shell

Josef Kufner avatar 27.10.2017 23:13 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
Jen pro doplnění: Shelly (včetně Bashe) jsou orientovány hlavně na interaktivní použití z příkazové řádky. Na programování se moc nehodí. Něco menšího se dá, ale cokoliv většího je utrpení.

Pokud s programováním začínáš, sáhni radši po Pythonu a k Bashi se vrať potom. Pokud máš dobrý důvod i přes to se pustit do bashe, tak viz https://www.root.cz/clanky/programovani-v-bash-shellu/.
Hello world ! Segmentation fault (core dumped)
k3dAR avatar 28.10.2017 02:55 k3dAR | skóre: 63
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
pokud jde o "programovani" ve stylu zautomatizovani, nebo vyuziti GNU a jinych dostupnych nastroju, je BASH naprosto v pohode i pro vetsi "projekty" ;)
porad nemam telo, ale uz mam hlavu... nobody
Řešení 1× (Vladimír Čunát)
26.10.2017 15:09 štefan
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj, shell je obecný název pro program umožňující zadávat příkazy interaktivně nebo v dávkách (souborrech), kdežto bash je konkrétní implementace tohoto principu.

Rozdíli můžou být: U mnoha linuxů je shell synonymem (zkratkou) pro právě bash.

Jako orientační základ dobře poslouží tento článek na rootu: https://www.root.cz/clanky/programovani-v-bash-shellu/

Jinak manuálové stránky bash (angličtina): https://www.gnu.org/software/bash/manual/bashref.html

Při nainstalovaném linuxu je k dispozici příkaz
man bash
, který v závislosti na instalaci a distribuci by případně mohl býti i v češtině.
26.10.2017 21:26 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
Odpovědět | | Sbalit | Link | Blokovat | Admin

Bash je jednou z mnoha implementací shellu definovaného standardem, která ale přidává obrovskou spoustu funkcí navíc. Rozdíl je tedy ten, že v Bashi se dá spousta věcí napsat úsporněji a jednodušeji než ve standardním shellu. Pravděpodobně nejblíž implementaci původního standardu je Dash.

Ještě před několika lety se mělo všeobecně za to, že skripty v distribucích by se měly omezovat pouze na standardizovaný shell bez rozšíření typu Bash, aby příznivci a odpůrci Bashe mohli mírumilovně koexistovat. Poslední dobou se ale takové orthodoxní postoje příliš nevidí a spousta skriptů přímo závisí na Bashi.

Bash má například pole, která výrazně usnadňují některé situace, a k tomu obrovskou spoustu expanzí proměnných, které standardní shell nepodporuje:

soubory=('první' 'druhý' 'třetí')              
echo "${soubory[@]/%/.přípona}"

Dash něco podobného dokáže (zdánlivě) taky, ale problém nastane, pokud například některé jméno souboru bude obsahovat mezeru. Bez mezer (a s totožným výstupem) to půjde třeba takto.

soubory='první druhý třetí'
echo $(for soubor in $soubory; do echo "${soubor}.přípona"; done;)

Další zajímavost Bashe je (kromě polí) taky aritmetika a datové typy. Proměnné deklarované jako integer podporují jednoduché přiřazení a použití ve výrazech. Bohužel Bash podporuje jen bezznaménková celá čísla, ale něco se v něm tu a tam spočítat dá. To následující je funkce, která vyhodnocuje polynomy:

# Příklad: 4x^2 + 2x + 3 [x = 7]: polynomial 4 2 3 7
polynomial() {
  local -ar args=("$@")
  local -air coefficients=("${args[@]:0:${#args[@]} - 1}")
  local -ir variable="${args[-1]}"
  local -i value=0
  local -i power=1
  for ((index = 1; index <= ${#coefficients[@]}; ++index)); do
    value+='power * coefficients[-index]'
    ((power *= variable))
  done
  echo "$value"
}

A tady je 53 + 2×52 + 3×5 + 4:

$ polynomial 1 2 3 4 5
194

Tohle^^^ by Dash dokázal jistě taky, v potu tváře a za použití expr, ale asi bych to v něm nechtěl kódit. Bash je tedy trochu univerzálnější než standardní shell; dokáže zastat několik málo běžných funkcí, kvůli kterým by bylo jinak potřebné sáhnout k perlu, sedu nebo awk.

27.10.2017 14:35 jiwopene@gmail.com
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mám pár poznámek:

Shell není až tak často používaný jako programovací jazyk nebo se udělá nějaký "program" (napíše příkaz), který je použit jednou, neukládá se a jde nám pouze o výsledek (vyhledání souboru, ...).

Jestli jste začátečník, doporučuji si pročíst Linux v Příkazech (doufám, že to smím napsat. ;-) ).

Program v bashi může být docela krátký, ale přitom složitý. Velkou výhodou jsou roury:
nmap -n -iR 100 -T5 -p 80 -oG -|grep open|tr -d 'Host:( '|cut -d ')' -f 1
Data z nmap se neobjeví na obrazovce, ale půjdou na vstup programu grep, pak tr a výstupem bude výstup cut.

Téměř pokaždé, když někdo píše shell, myslí bash či něco kompatibilního.
27.10.2017 16:29 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
Sice binárních programu v /usr/bin je více, ale přesto ze systému mi v něm sídle skoro skriptů pro bash.
27.10.2017 22:10 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
Nejen roury, ale i víceprocesové zpracování dat se v shellu dělá velmi snadno a jede to i svižně. Pokud se však někdo pokouší v shellu programovat podobně jako třeba v C, obvykle spláče nad výkonem. Pole by se v shellu vůbec nemělo používat, jsou s ním jen patálie.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
27.10.2017 16:49 Kit
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
Velmi často se stává, že někdo do skriptu napíše příkazy pro Bash, do záhlaví uvede #!/bin/sh a pak se diví, že mu to nefunguje.
27.10.2017 17:53 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
Nebo má symlink /bin/sh na /bin/bash a pošle to někomu, kdo v /bin/sh má něco jiného než bash.
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
27.10.2017 18:56 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
To je ešte relatívne v poriadku. Horšie je keď niekto do tvojho skriptu pre posixový shell "dorobí" kusy kódu v bash-i a keď sa vrátiš z dovolenky tak ideš na koberček ty namiesto neho. Samozrejme že o tej zmene nevieš, len to proste prestalo fungovať.
27.10.2017 21:59 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
To je přece snadno dohledatelné v repozitáři, kdo kdy kterou změnu udělal.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
28.10.2017 08:49 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
Už vidím nikoho čo používa repozitár na lokálne záležitosti čo automatizujú drobnú rutinu. Problém je v tom, že vedúceho obvykle nezaujíma kto to bol. Vedúceho obvykle zaujíma že to nefungovalo, on sa rozčuľoval, musel nahučať na autora nech to dá do poriadku a začalo to fungovať. Dôvod, prečo to prestalo fungovať žiadneho vedúceho nezaujíma.
28.10.2017 12:18 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
U nás je to standard. Na produkci nesmí být nic, co by současně nebylo v repozitáři. Když něco nefunguje, tak revert je první akcí, která se provádí.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
27.10.2017 22:02 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
Když uděláš symlink /bin/sh na /bin/bash, mělo by se to chovat jako posixový shell. Bash totiž kontroluje, pod jakým jménem byl spuštěn a podle toho mění své chování.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
28.10.2017 08:58 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Rozdíl mezi shel a bash
Nie vždy to sedí tak ako by malo. Ale to je nad rámec otázky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.