Bash et dash

mERCI, c’est en effet mineur comme différences.

dash n’est pas fait pour être un shell interactif. Continuez à utiliser bash, tcsh, zsh, etc pour vos compte, hein ?

Quelle/s est/sont la/les différence/s entre bash et zsh (je ne connais pas du tout zsh, je vais chercher, mais si vous avez des liens intéressants…) :smt006

A peu près les même différences qu’entre ed et vim.

En fait zsh a vraiment beaucoup beaucoup de fonctionnalités en plus autant pour faire des scripts qu’en shell interactif.

Si vous voulais jouter des choses sur la page du wiki debian : wiki.debian.org/fr/Dash
Il y a d’ailleurs la possibilité dès à présent d’utiliser Dash comme /bin/sh

Bonjour,
Hier au cours d’une mise à jour, question : souhaitez vous conserver bash ou passer à dash ?
Petit clic sur :question: > réponse Debian préconise dash, choisissez plutot dash…
Je n’ai pas cherché plus loin, je suis sous dash.
Bien sur aucune différence au redémarrage, c’est (en apparence) pareil…

[quote]à dash ?[/quote] :laughing:

Ton login shell reste bash de toute façon

[quote=“MisterFreez”]A peu près les même différences qu’entre ed et vim.

En fait zsh a vraiment beaucoup beaucoup de fonctionnalités en plus autant pour faire des scripts qu’en shell interactif.

Si vous voulais jouter des choses sur la page du wiki debian : wiki.debian.org/fr/Dash
Il y a d’ailleurs la possibilité dès à présent d’utiliser Dash comme /bin/sh[/quote]

Merci beaucoup! :smt006

Salut, :smt006

jeanbaptiste-bourgoin.com/index.php?tag/zsh
cli.asyd.net/home/shell/zsh/racine
acm.uiuc.edu/workshops/zsh/toc.html
grml.org/zsh/

…il n’y pas tout :wink:

Alors Bash ou Dash au final ?
Et zsh, as-tu essayé ?

Salut, :smt001
J’ai moi aussi accepté dash sous testing dernièrement, seulement mon “/bin/sh” pointe toujours vers bash, donc à moins que les routines de démarrage utilisent explicitement dash, je crois pas qu’on puisse voir de différence au démarrage pour l’instant. Ou alors j’ai loupé un truc (dans la compréhension de mon système ou à la mise à jour :neutral_face: )

Alors je pousse un petit coup de gueule contre dash (oui, directe j’ai tranché) et aussi contre la communauté Debian (pas taper) :

je ne suis pas d’accord sur le fait d’avoir remplacer /bin/sh -> bash par /bin/sh -> dash sans avoir averti EXPLICITEMENT, ni expliqué POURQUOI l’avoir fait ? A présent les scripts exécutés lancés directement, écrits en bash, ne FONCTIONNENT PLUS. C’est une REGRESSION. C’est nul.

Essayez la commande suivante en dash :
for (( i=1; i<10; i++ )); do echo -n $i" ";done;echo “”
dash: Syntax error: Bad for loop variable

en bash :
for (( i=1; i<10; i++ )); do echo -n $i" ";done;echo “”
1 2 3 4 5 6 7 8 9

dash est même pas capable de faire les boucles for de bash. Alors ok, c’est peu-être plus rapide sur des boucles de milliers de cycles, où tu gagnes 3-4 secondes, mais c’est la merde. Maintenant, à chaque installation de Debian, il faut vérifier le lien /bin/sh, ou ré-écrire tout ses scripts. :013

Et comment ce-fait-ce que Dash (Debian shell… :075 ), qui vient du NetBSD Almquist Shell ash, ait remplacé bash, qui décent du Bourn shell sh implémenté dans la version 7 d’UNix par le laboratoire Bell ? Qui a décidé cela ? Je veux dire, c’est pas le nombre de shell différents qui manque. Il y a aussi le C shell csh, l’excellent Korn Shell ksh, ou même carrément, tant qu’à faire, Perl, Awk, Ruby, Php, Haskell, Python. Je préférerais encore un lien /bin/sh vers Python que vers dash.

:question:

ricardo@sid-sda8:~$ for (( i=1; i<10; i++ )); do echo -n $i" ";done;echo "" 1 2 3 4 5 6 7 8 9

nanard@Top:~$ for (( i=1; i<10; i++ )); do echo -n $i" ";done;echo "" 1 2 3 4 5 6 7 8 9 nanard@Top:~$

Excuse-moi Cactus, je tournais sous bash.
Tu as raison :

ricardo@sid-sda8:~$ /bin/dash $ for (( i=1; i<10; i++ )); do echo -n $i" ";done;echo "" /bin/dash: Syntax error: Bad for loop variable

C’est voulu.
/bin/sh qui pointait auparavant vers Bash a été remplacé par Dash car ce dernier est beaucoup plus rapide : diminution du temps de boot.
Ensuite, de ce que j’ai compris, le standard en Shell POSIX est Sh, et Dash est celui qui s’en rapproche le plus, donc les scripts systèmes (tel que les scripts d’init) se devaient d’être écrit en Sh.
Pour cela, avant la transition Bash -> Dash, tous les scripts système sous Debian ont dû être corrigés pour ne plus employer d’instructions propres à Bash, et respecter rigoureusement Sh.

Au lieu de modifier le lien symbolique /bin/sh -> dash, change plutôt la ligne shebang de tes scripts par #!/bin/bash.

[quote]je ne suis pas d’accord sur le fait d’avoir remplacer /bin/sh -> bash par /bin/sh -> dash sans avoir averti EXPLICITEMENT, ni expliqué POURQUOI l’avoir fait ?[/quote]Ça a été fait sur les mailing list et l’annonce concernant les objectifs à atteindre pour Squeeze, et ça sera sûrement indiqué dans les Releases Notes lors de sa publication en stable :
debian.org/News/2009/20090730

Salut,

Et moi qui suis comme Mr. Jourdain ! Depuis quand je suis sous dash ?

[quote=“ggoodluck47”]Salut,

Et moi qui suis comme Mr. Jourdain ! Depuis quand je suis sous dash ?[/quote]
D’après le changelog du paquet dash, je dirai depuis le 22 juillet 2009 en unstable.

packages.debian.org/changelogs/p … .5.5.1-2.2

[code]* Change the default for the system shell to dash.

  • Ship /bin/sh in the package and fix the diversion handling
    for it to make sure /bin/sh is always present.[/code]

Il doit bien y avoir une commande qui nous indique sur quoi on est (bash ou dash), non ?
Chez moi, les deux sont installés.

On peut dissocier dash pour root, bash pour utilisateur A , zsh pour utilisateur B …

pour ce qui est du choix général :

dpkg-reconfigure dash

et répondre NON à la question posée pour rester en bash.

J’ai tenté, en répondant “oui”, et donc je suis considéré comme utilisant 'dash’
J’ai repris l’exemple de notre ami Cactus et :

ricardo@sid-sda8:~$ sudo dpkg-reconfigure dash [sudo] password for ricardo: ricardo@sid-sda8:~$ for (( i=1; i<10; i++ )); do echo -n $i" ";done;echo "" 1 2 3 4 5 6 7 8 9

Que faut-il en déduire ?

Le Shell des utilisateurs restera Bash par défaut. Quand Debian annonce que Dash sera le nouveau Shell par défaut, ça concerne le lien symbolique /bin/sh qui pointera vers Dash. Par conséquent, tous les scripts ayant pour ligne shebang #!/bin/sh utiliseront Dash.
Par exemple, prenons un script d’init au pif, /etc/init.d/halt :

$ head -n 1 /etc/init.d/halt #! /bin/sh
/etc/init.d/halt utilisera le Shell pointé par le lien symbolique /bin/sh, et pour connaître ce Shell :

La commande de etxeberrizahar (# dpkg-reconfigure dash) ne fait que recréer le lien symbolique /bin/sh pour le faire pointer soit vers Bash (réponse “Non”), soit vers Dash (réponse “Oui”)

Quand un utilisateur ouvre un terminal, ou quand il se connecte en tty, c’est le Shell paramétré dans /etc/passwd qui sera utilisé :

$ grep $USER /etc/passwd…qui n’a rien à voir avec le Shell système /bin/sh comme vu plus haut.

[quote=“ricardo”]J’ai tenté, en répondant “oui”, et donc je suis considéré comme utilisant ‘dash’[/quote]Nop, ce n’est pas ton compte utilisateur qui est affecté, mais le Shell système /bin/sh !