Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/08/2008, à 17:57

®om

C'est "bash" ou c'est "dash"?

Salut,

J'étais persuadé que les consoles ubuntu étaient par défaut en dash.
D'ailleurs :

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2008-08-02 14:15 /bin/sh -> dash

Mais pourtant :

$ echo $SHELL
/bin/bash

Comment se fait-ce?

Hors ligne

#2 Le 12/08/2008, à 18:00

tiky

Re : C'est "bash" ou c'est "dash"?

C'est bash le shell par défaut sur Ubuntu et de nombreuses autres distributions GNU/Linux d'ailleurs. Je n'ai pas d'Ubuntu pour voir mais sous ma gentoo, /bin/sh pointe bien sur bash. Tu peux le modifier si tu veux mais le shell par défaut n'est pas déterminé par ce lien symbolique mais par la configuration du compte utilisateur.


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne

#3 Le 12/08/2008, à 18:03

®om

Re : C'est "bash" ou c'est "dash"?

OK (c'est configuré où d'ailleurs?).
Mais pourquoi alors avoir fait pointer /bin/sh vers dash?

<hypothèse type="bidon">
Les développeurs n'étaient pas d'accord, et ils ont fini par trouver un compromis («ok, on accepte de mettre bash par défaut, mais on veut que sh pointe vers dash!»)?
</hypothèse>

Hors ligne

#4 Le 12/08/2008, à 18:12

davromaniak

Re : C'est "bash" ou c'est "dash"?

Salut.

En fait, c'est légèrement plus compliqué.

À l'origine, il y avait le "sh", un bon vieux shell concocté par M Stephen Bourne en 1977.

Quelques temps après (en 1987), M Ramey et Fox font un fork de SH, nommé BASH.

À l'heure actuelle, c'est toujours bien le BASH qui est dans /bin/bash.

Pour le DASH, c'est plus compliqué.

L'origine, c'est toujours le SH.

Mais Kenneth Almquist a eu l'idée de porter le SH sous les systèmes SUN, ayant effectué quelques modifs, il l'a nommé ASH.

Avec le temps, et les différents contributeurs (et le passage sous les BSD), ASH a beaucoup evolué.

Au point que les devs Debian étaient intéressés par un portage de ASH sur les plateformes Debian.

Ainsi naquit le DASH.

Pour résumer, le DASH, c'est un SH bien plus léger et puissant que le SH original.

Par défaut, les utilisateurs ont comme shell le DASH (sous debian, linké en /bin/sh), et BASH (sous ubuntu), c'est à toi de le préciser si tu veux qu'ils aient le BASH.

@+

Dernière modification par davromaniak (Le 12/08/2008, à 18:13)


Blog
La guerre, ce n'est pas mourir pour son pays mais faire que pour le salaud d'en face meure pour le sien (Wiston Churchill)
Proverbe russe : "L'église est proche mais la route est verglassée. Le bar est loin mais je marcherai avec prudence..."

Hors ligne

#5 Le 12/08/2008, à 18:19

tiky

Re : C'est "bash" ou c'est "dash"?

Soit c'est une erreur, soit ils ont trouvé plus judicieux de faire pointer sh sur dash car on utilise souvent cette commande pour appeler un autre shell que celui qu'on utilise habituellement.

Pour voir le shell par défaut d'un utilisateur:

cat /etc/passwd | grep ton_utilisateur | awk -F: '{print $7}'

Nb: J'ai pas trouvé de commande toute faite pour le faire. Tu dois être en root pour lire /etc/passwd ( sudo -s ).

Edit: Bon alors c'est pas une erreur mais c'est bien ce que je pensais, c'est pour utiliser un autre shell au besoin.

Dernière modification par tiky (Le 12/08/2008, à 18:21)


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne

#6 Le 12/08/2008, à 18:23

davromaniak

Re : C'est "bash" ou c'est "dash"?

En fait, les règles sont simples :

Tout ce qui fonctionne en sh, fonctionnera en dash, car c'est surtout des optimisation processeur et mémoire.

Tout ce qui fonctionne en sh ne fonctionnera pas obligatoirement en bash, car bash est une ré-écriture quasi-totale de sh, avec un ajout considérable de fonctions.

@+


Blog
La guerre, ce n'est pas mourir pour son pays mais faire que pour le salaud d'en face meure pour le sien (Wiston Churchill)
Proverbe russe : "L'église est proche mais la route est verglassée. Le bar est loin mais je marcherai avec prudence..."

Hors ligne

#7 Le 12/08/2008, à 18:41

bertrand0

Re : C'est "bash" ou c'est "dash"?

Il ya une autre considération: le lien /bin/sh est censé pointer vers un shell conforme au standard POSIX, c'est à dire se conformer à un standard portable reconnu car de nombreux scripts font appel à /bin/sh comme shell d'exécution.
Bash lorsqu'il est exécuté via le lien /bin/sh a un comportement conforme au standard POSIX 1003.2 (il n'a donc pas le même comportement que lorsqu'il est exécuté en tant que /bin/bash)
Dash est censé être plus proche du standard POSIX que bash, d'où le fait de pointer /bin/sh sur dash par défaut dans ubuntu...

Remarque pour clarifier:
bash est le shell interactif par défaut pour tout nouvel utilisateur (voir /etc/adduser.conf qui contient DSHELL=/bin/bash)
mais dash est le shell de script par défaut (grâce au lien /bin/sh)


Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
                                                            Buffon, Discours sur le style

Hors ligne

#8 Le 13/08/2008, à 00:52

xamaco

Re : C'est "bash" ou c'est "dash"?

Voir https://wiki.ubuntu.com/DashAsBinSh
En gros, dash est plus rapide et plus Posix que bash. Quand Linux démarre plein de scripts sont appelés. Dash rend le démarrage plus rapide. Comme dash est beaucoup plus proche de posix que bash, des problèmes de compatibilité peuvent se produire. Ces problèmes arrivent lorsque un script shell commence par :
#! /bin/sh
Lorsque ces scripts se basent sur bash, il devraient commencer par :
#! /bin/bash
Le login shell reste bash. Les problèmes affectent les scripts démarrés par le système, SI IL COMMENCENT par /bin/sh et non /bin/bash
En gros, si je comprend bien.

Hors ligne

#9 Le 13/08/2008, à 01:07

bertrand0

Re : C'est "bash" ou c'est "dash"?

Oui, si un script fait appel à des extensions spécifiques à un shell, il doit utiliser le nom de ce shell spécifique dans son en-tête.
Par contre, si un script est écrit pour être portable, respectant strictement POSIX, il doit utiliser /bin/sh dans son en-tête.


Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
                                                            Buffon, Discours sur le style

Hors ligne