[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