Newsgroup: it.comp.os.linux.sys
Titolo: bash vs dash ???

Premetto che probabilmente è solo un dubbio "teorico" ...
Ubuntu usa come /bin/sh dash e non bash, perchè più veloce.
Molti script che ho visto in giro usano i bash builtins perchè dicono 
"più veloci" .
Ad esempio in bash: builtin type -P mkisofs &>/dev/null
Con dash presumo dovrei usare which ...
Ma quale delle due soluzioni è migliore?
Preciso che non sono un sysadmin di versioni esoteriche di unix, quindi 
presumo che mettere /bin/bash invece di /bin/sh risolva tutto in modo 
semplice, era solo per curiosità :-)

 Ma quale delle due soluzioni è migliore?
  "La shell migliore è quella che fa meglio quello che a te serve di fare"©.
  Se quello che a te serve lo sa fare sia la bash che la dash, allora è
quasi sicuramente conveniente usare la dash; altrimenti usi la bash.  Per i
casi intermedi, ossia per quelle cose che si può fare con entrambe ma che
con la dash bisogna fare in tre-quattro passi invece che uno solo (senza
usare eseguibili su filesystem), allora devi vedere con delle prove qual'è
la più veloce.  Oppure potresti preferire la bash per la semplicità senza
badare a spese (in termini di risorse di sistema utilizzate).
  Ciao,
-- 
Alessandro Selli, 
http://alessandro.route-add.net
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.
Chiave PGP/GPG: EC885A8B

   Uh?  La bash avrebbe mkisofs come comando builtin?!
  Forse ho capito: non stai parlando di comandi interni della shell
(builtin), ma di alias oppure di funzioni.  In questo caso è semplice,
anche la dash li ha:
alessandro@krill ~ $ dash
$ Provola () { echo $# ; }
$ Provola uno due tre
3
$ alias ll='ls -l'
$ alias ll
ll='ls -l'
$
  Solo che la dash usa file di inizializzazione diversi (tranne
/etc/profile), e quindi può facilmente succedere che gli alias e le
funzioni che di default hai nella bash non hai nella dash.
  Ciao,
-- 
Alessandro Selli 
http://alessandro.route-add.net



No, quella riga di codice � un estratto da uno script, verifica la 
presenza di mkisofs...
"builtin" lo uso per garantire che verr� usato il "type" builtin e non 
un eventuale comando esterno (probabilmente solo una precauzione 
inutile, ma l'ho visto fare molte volte...)
poi "type -P mkisofs" � il builtin che mi sostituisce "which mkisofs" ...

 Ma quale delle due soluzioni è migliore?
Quella che vuoi, sono solo gusti personali.

 type tua personale. quindi usa direttamente:
Grazie del chiarimento, avevo frainteso quello che avevo letto da 
qualche parte :-)
Ciao

 Ubuntu usa come /bin/sh dash e non bash, perchè più veloce.
e pure debian
esistono sicuramente altre metriche, ma queste due sono interessanti
% echo scale=2\;$(man bash|wc -w)/$(man dash|wc -w)|bc
4.05
% echo scale=2\;$(du -b /bin/bash|cut -f 1)/$(du -b /bin/dash|cut -f 1)|bc
9.64
% 
si POTREBBE dire che bash è 4 volte più complessa e 10 volte più
complicata di dash
dove sta/come non usare la complessità addizionale di bash?
http://www.google.com/search?&q=bashisms
molti problemi, per la loro natura un po' usa e getta, ci spingono a
usare bash e non pensarci più

 Ma quale delle due soluzioni č migliore?
Dash lava piů bianco :)

 Quella che vuoi, sono solo gusti personali.
La cosa che rompe negli script è /bin/sh. Non sai mai che shell ti troverai 
a dover affrontare. Quindi la prima roba che faccio quando creo uno script 
nuovo è scriverci bash e non sh.
Mi ricordo che quando fu introdotta la dash in ubuntu e il mio portatile 
aveva fedora, ci ho perso un scacco di tempo per capire cosa non andava in 
uno script che girava perfettamente sul mio portatile ma quando andava sul 
server smetteva di funzionare. Grr.
Nicola.
-- 
chi va pian va san e va lontan