2 votes

Configurer bash au lieu de dash sur Ubuntu 22.10

Sur une toute nouvelle installation Ubuntu 22.10, j'ai essayé la commande

sudo dpkg-reconfigure dash

Qu'il n'a rien fait

J'ai appris de cette expérience poste que cette fonction a été supprimée.

Quelle est donc la bonne façon de faire de bash le système Shell (ex. /bin/sh ) ? J'espère ne pas avoir à m'occuper des liens symboliques de l'exécutable, de la page de manuel et de tout ce qui est nécessaire....

2voto

Raffa Points 11919

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 .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X