Je suppose que vous savez qu'il existe des différences entre dash
y bash
... Bien que dash
Les scripts doivent en général fonctionnent sans problème dans bash
... (mais pas l'inverse), il est conseillé de ne pas changer le Shell par défaut du système car les Shell du système sont écrits pour le Shell par défaut et des différences/problèmes pourraient survenir à l'avenir.
Il est également bon de connaître et de respecter la version actuelle de la norme FHS( Norme de hiérarchie des systèmes de fichiers ) , définition de /bin/sh
:
sh
Commande compatible avec POSIX Shell
Si /bin/sh
n'est pas la commande Shell compatible POSIX elle-même, elle doit être un lien dur ou symbolique vers la véritable commande Shell.
Ceci étant dit ... sudo dpkg-reconfigure dash
lors du choix no modifie ces liens symboliques :
$ ls -l /bin/sh /bin/sh.distrib /usr/share/man/man1/sh.1.gz
lrwxrwxrwx 1 root root 4 Jan 20 16:10 /bin/sh -> dash
lrwxrwxrwx 1 root root 4 Jan 20 15:42 /bin/sh.distrib -> bash
lrwxrwxrwx 1 root root 9 Jan 20 16:10 /usr/share/man/man1/sh.1.gz -> dash.1.gz
à ces liens symboliques :
$ ls -l /bin/sh /bin/sh.distrib /usr/share/man/man1/sh.1.gz
lrwxrwxrwx 1 root root 4 Jan 20 16:10 /bin/sh -> bash
lrwxrwxrwx 1 root root 4 Jan 20 16:10 /bin/sh.distrib -> dash
lrwxrwxrwx 1 root root 9 Jan 20 16:10 /usr/share/man/man1/sh.1.gz -> bash.1.gz
et vice versa lors du choix de yes .
Cela dit encore ... Bien que la simple création de liens symboliques ait le même système Shell et man sh
Il convient de noter que les résultats de l'enquête sur le comportement des femmes sont très positifs. sudo dpkg-reconfigure dash
le fait également avec dpkg
détournements ... D'où l'existence de sh.distrib
... Cela aura pour effet supplémentaire de dpkg
reconnaît le changement et traite ces fichiers en conséquence :
Les détournements de fichiers sont un moyen de forcer dpkg(1) à ne pas installer un fichier à son emplacement, mais à un emplacement détourné. Les déroutements peuvent être être utilisés par le paquet Debian scripts pour déplacer un fichier lorsqu'il lorsqu'il provoque un conflit. Les administrateurs système peuvent également l'utiliser pour pour remplacer un fichier de configuration d'un paquet, ou lorsque certains fichiers (qui ne sont pas marqués comme des "conffiles") ont besoin d'être préservés par dpkg, lors de l'installation d'une nouvelle version d'un paquetage.
qui contient ces fichiers.
La diversion lors du choix no se déroule comme suit :
Removing 'diversion of /bin/sh to /bin/sh.distrib by dash'
Adding 'diversion of /bin/sh to /bin/sh.distrib by bash'
Removing 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash'
Adding 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by bash'
C'est ainsi que l'on procède :
$ sudo dpkg-divert --package dash --remove /bin/sh
$ sudo dpkg-divert --package bash --divert /bin/sh.distrib --add /bin/sh
$ sudo dpkg-divert --package dash --remove /usr/share/man/man1/sh.1.gz
$ sudo dpkg-divert --package bash --divert /usr/share/man/man1/sh.distrib.1.gz --add /usr/share/man/man1/sh.1.gz
et lorsqu'il s'agit de choisir yes se déroule comme suit :
Removing 'diversion of /bin/sh to /bin/sh.distrib by bash'
Adding 'diversion of /bin/sh to /bin/sh.distrib by dash'
Removing 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by bash'
Adding 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash'
C'est ainsi que l'on procède :
$ sudo dpkg-divert --package bash --remove /bin/sh
$ sudo dpkg-divert --package dash --divert /bin/sh.distrib --add /bin/sh
$ sudo dpkg-divert --package bash --remove /usr/share/man/man1/sh.1.gz
$ sudo dpkg-divert --package dash --divert /usr/share/man/man1/sh.distrib.1.gz --add /usr/share/man/man1/sh.1.gz
Ainsi, si vous effectuez les liens symboliques et les détournements en conséquence, vous devriez obtenir le même résultat final en lançant sudo dpkg-reconfigure dash
.