Jsou skripty dash, ash a sh 100% kompatibilní?

Chtěl jsem vědět, zda jsou skripty napsané pro dash, ash a sh 100% kompatibilní?

Existují nějaké přidané funkce pomlčka nebo popel nebo změna syntaxe?

Z toho, co jsem slyšel, je ash přímým potomkem sh.

Komentáře

  • popel je pruhovaná forma bash
  • Zdroj? Neviděl jsem nic, co by říkalo, že popel souvisí s bash
  • Proč by lidé ' t místo odesílání patchů do bash místo vytváření všech druhů skořápek jen neposílali patche, což mě buší po celou dobu. Pokud opravdu chcete vědět, přečtěte si příručku, např. man ash
  • Správně, ' to není potomek z bash. Bylo by přesnější říci, že ' jsou potomky sh (původní Bourneův shell), ale ani to ' není úplně správné .
  • Pomocí nástroje checkbashisms můžete otestovat, zda je váš skript kompatibilní s POSIX.

Odpověď

Krátká odpověď je ne, oni „nejsme 100% kompatibilní.

Většina skořápek je však velmi blízká základní, takže byste jen zřídka narazili na nesrovnalosti. Ve skutečnosti většina skořápek se příliš neliší přidanou syntaxí, ale některými dalšími funkcemi, jako je doplňování karet a podobné.

Také dash je jakýmsi potomkem ash — nebo port z BSD do Linuxu, abych byl přesný. A všichni by měli být potomci nebo různé implementace sh. Ve skutečnosti sh je na většině systémů pouze symbolický odkaz na bash, dash nebo na něco jiného. Důležitá je shoda s POSIX — a při psaní skriptů podle standardů se nedostanete do problémů.

Rozdíl mezi těmito skořápkami spočívá v optimalizacích a výkon. Jsou „méně bohaté na funkce než bash, ale jsou to plně legitimní skořápky. Bash je pro interaktivní práci bohatý na funkce, ale například využívá více paměti.

Komentáře

  • Ale pro použití skriptu jsou kompatibilní?
  • A pokud jde o shodu s POSIX, i když se řídím tímto standardem, pokud je napsán skript pro Bash, nemyslím si, že bude fungovat na jakémkoli sh nebo jeho potomkovi.
  • Měli by být kompatibilní pokud ' nepoužíváte některé nejasné funkce. Pokud ale používáte bash skript, můžete narazit na další potíže.
  • nikdy neměl v úmyslu použít bash s sh nebo ash nebo dash. Co jsou to za obskurní funkce?
  • mnoho z novějších funkcí bash ' je doplněním POSIXu, takže je stále pravděpodobnější, že pokud ' znovu je používám. IIRC ani konstrukt [[]] není v sh. Pamatujte také, že pokud ' nepíšete čistý shell skript, vstupují do hry také rozdíly v nástrojích (různé verze sed, grep, awk …).

Odpověď

Je třeba zmínit, že na některých systémech, zejména Debian, / bin / ash není k dispozici:

$ type ash dash bash: type: ash: not found dash is /bin/dash 

Komentáře

  • Mohou mít ashbox busyboxu.
  • To znamená, že existuje mnoho systémů, které ' nemají ani bash.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *