web-dev-qa-db-fra.com

Est-il possible de désinstaller sh?

Cela peut paraître idiot, mais je souhaite désinstaller sh (à des fins de recherche) et le remplacer par mon propre shell. Est-ce réellement possible?

De nombreux scripts et programmes semblent l'avoir codé en dur, alors je doute de sa viabilité.

2
whatever489

AVERTISSEMENT! VEUILLEZ LIRE AVANT D'UTILISER TOUT COMMANDEMENT!

Cette réponse est seulement à des fins de recherche et de connaissance approfondie d’Ubuntu Linux. Exécuter des commandes dans cette réponse peut très bien détruire votre système entièrement. Assurez-vous que vous êtes dans une VM ou une sauvegarde. Je ne suis pas responsable si vous cassez votre système.

La commande sh est fournie par dash, au moyen d'un lien symbolique:

$ ll /bin/sh
lrwxrwxrwx 1 root root 4 Jun  1 08:33 /bin/sh -> dash*

$ which sh
/bin/sh

$ dpkg -S /bin/dash
dash: /bin/dash

$ dpkg -S /bin/sh
diversion by dash from: /bin/sh
diversion by dash to: /bin/sh.distrib
dash: /bin/sh

Pour le supprimer, exécutez la commande ci-dessous:

Sudo apt remove dash

APT vous renverra avec le message d'erreur suivant:

You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'

Si vous êtes vraiment prêt à détruire votre système, tapez-le et appuyez sur Return.

Ubuntu désinstallera alors bash, lightdm et le méta-package ubuntu-desktop (ainsi que tous les packages qui dépendent de ces trois), car ils dépendent tous de dash. Si votre shell actuel ne fonctionne pas parfaitement, votre système sera inutilisable après la suppression de la dernière instance de bash ou dash.

Si vous suivez réellement cette commande, le seul moyen de restaurer les fichiers appropriés est de démarrer sur un Live CD et de réinstaller les packages via une session de récupération chrooted.

Si vous êtes vraiment chanceux, vous pourrez toujours réparer votre système en réinstallant les paquetages, à condition que le shell root soit toujours ouvert. Les systèmes ont récupéré du pire avant, mais la chance doit vraiment être de votre côté pour cela.


Au lieu de cela, je vous suggère de refaire le lien symbolique /bin/sh pour qu'il pointe vers votre shell. Dans ce cas, vous pouvez simplement restaurer dash si quelque chose ne va vraiment pas. Faites ceci en lançant ces commandes:

Sudo -s
cd /bin
rm sh
ln -s /path/to/your/Shell sh
chmod 777 sh

Restaurez dash en répétant ces étapes, mais en spécifiant dash à la place de votre propre shell. Ou simplement lancer Sudo apt install --reinstall dash. Vous aurez peut-être besoin de spécifiez un init personnalisé pour le faire.

4
Kaz Wolfe

Je voudrais installer votre propre Shell à côté de SH. La désinstallation de SH est une très mauvaise idée, car de nombreux programmes et scripts en dépendent.

0
jadenPete