[rlug] bash vs sh

Dumitru Moldovan dumol at gmx.com
Fri Oct 23 21:20:00 EEST 2020


On Fri, Oct 23, 2020 at 17:16, Alex 'CAVE' Cernat <cave at cernat.ro> 
wrote:
> din ciclul "bah, tu n-ai servici" (nea marin miliardar sa traiasca!) 
> tot
> nu mai fusese de mult flama de vineri
> 
> o discutie filosofala, bazata pe linux-urile actuale care mai toate au
> instalat bash-ul (versiune minim 4.0), deci din start zic ca nu mizez 
> pe
> "suportabilitate" si posix, insa: bash 4 gasesti la orice pas e axioma
> 
> si acum intrebarea: daca tot bash 4 stie multe si marunte, atunci nu 
> ar
> mai fi indicat ca toate scripturile relativ simple posibile (gen
> monitorizare & stuff) sa foloseasca noile (desi vechi de ani) 
> facilitati
> din bash 4 ?
> 
> cu alte cuvinte de ce in ziua de azi m-as chinui cu sed-uri, grep-uri 
> si
> awk-uri si alte marafeturi de genul cand bash-ul are builtin marea
> majoritate a functiilor respective (vorbim de chestii relativ simple 
> si
> mai ales pe maxim cateva zeci de linii de output de procesat)
> 
> ok, sunt de acord ca /bin/sh are vreo 120k (si asta ca e de fapt 
> dash),
> iar bash-ul peste un mega, insa fork-urile si executia la mai stiu eu
> cate grep-uri si awk-uri costa si alea ...
> 
> da, stiu, teoria chibritului  dar e vineri si pe vremuri era la moda


Ca mulți de aici, îmi câștig pita (și) scriind cod Bash.  Confirm 
că e disponibil peste tot unde am avut nevoie: Linux, Windows, OS 
X/macOS, BSD-uri, Unixuri comerciale.  Nu întotdeauna în `/bin/bash`, 
hashbang-ul corect este `#!/usr/bin/env bash`.  Și nu întotdeauna 
versiunea 4.x, în OS X/macOS s-au oprit la 3.2, care e ultima versiune 
GPL 2, cred.  Parcă și în HP-UX, dar mi-e lene să pornesc ultima 
măgăoaie din administrarea mea ce mai funcționează.

Pe unde nu e instalat implicit e ori fiindcă îi prea mare (de ex. în 
Alpine Linux, ce folosește Busybox), ori din motive de licență (de 
ex. în BSD-uri și Unixurile comerciale).  GPL e mai restrictiv decât 
o licență de tip BSD.  Iar GPL 3 e mai problematic pentru companii 
decât GPL 2, motiv pentru care și macOS are în ultima vreme zsh ca 
shell implicit pentru conturi nou create în macOS 10.15.

Dar nu te stresa, diversitatea asta e bună pentru sănătatea 
ecosistemelor UNIX-like.  Dacă peste tot ar fi doar un singur shell 
și acela ar fi Bash, atunci ceva ca Shellshock ar afecta 100% dintre 
sistemele UNIX-like.  Diversitatea presupune evident divergențe, nu 
ajungi să ai în practică shell-uri diferite cu caracteristici 
identice.

Standardul POSIX e însă o bază comună foarte solidă.  Evident, e 
mai nașpa când ai de scriptat ceva care să meargă și cu /bin/sh-ul 
din Solaris 10, dar se poate…  Am scris un uninstaller și vreo două 
scripturi SysV init în stilul ăsta, nu a fost mare brânză.

EOT?  :-]






More information about the RLUG mailing list