Une fois, un de mes amis (qui est un utilisateur expérimenté d'Unix / Linux) m'a dit que définir le shell de root sur autre chose que sh (c'est-à-dire bash ou zsh) pourrait créer des problèmes, car certains scripts pourraient supposer que le shell est sh et faire quelque chose de bizarre .
Cependant, je pense qu'Ubuntu a un shell racine par défaut défini sur bash, et Gentoo utilise également bash. Quelqu'un peut-il casser le mythe?
bash
. J'ai démarré en mode mono-utilisateur pour corriger, mais cela ne fonctionnait que parce qu'il/bin/sh
était toujours lié àFBSD
fork debourne
et nonbash
.zsh
et/usr
est en quelque sorte endommagé, j'aurai un problème? mais mon système a/bin/sh
pointé vers lui/bin/bash
-bash
même, pourquoi ne serait-il passh
affecté?zsh
ne devrait pas y être/usr/bin/
s'il est mal installé. tous les obus doivent être/bin
/bin
mais garde quelques fichiers dedans/usr/share
. J'ai également clairement indiqué que le problème est lié à la connexion lors du démarrage (lorsqu'un service échoue).Cela ne devrait pas être un problème.
Les fichiers shell-script codent explicitement avec quel shell ils sont exécutés. Il est encodé dans la première ligne ou d'autres programmes ou scripts exécutent un shell spécifique et donnent le script shell comme argument.
Le seul programme auquel je peux penser qui utilise les informations du shell du compte utilisateur (en plus du processus de connexion) est procmail. Vraiment drôle si votre utilisateur a défini comme shell / bin / false sur le serveur de messagerie ... Mais vous n'exécutez généralement pas procmail en tant que root.
Un autre candidat serait les lignes dans la crontab de racine. Je ne sais pas quelle est la politique de crond pour savoir quel shell utiliser.
la source
Les scripts écrits pour le shell bourne s'exécuteront la plupart du temps contre BASH ou ZSH ou $ foo sans aucun problème.
Sur de nombreux systèmes Linux, aucun sh d'origine n'est installé, mais plutôt un lien symbolique contre / bin / bash.
Si certains scripts "supposent" simplement que le shell est explicitement sh, ils doivent être réécrits. Le mécanisme Shebang permet de choisir l'interpréteur dont votre script a besoin. Si c'est le sh, le script doit inclure
#!/bin/sh
comme première ligne.Votre paramètre de shell par défaut ne devrait pas être pertinent dans ce contexte.
la source
Je ne pense pas que changer le shell de root causerait des problèmes. Je semble me souvenir de certains unités (peut-être des variantes BSD?) Ayant tcsh comme shell par défaut pour root.
Les connexions root sont rares de toute façon. Normalement, vous vous connectez à votre propre compte, puis su ou sudo pour rooter.
Ce qui importe, c'est que le shell de root ait le moins de dépendances possible afin d'être utilisable dans un contexte de réparation système. Par exemple, c'est une bonne idée d'avoir un shell racine lié statiquement; certaines distributions livrent une version liée statiquement de bash ou zsh ou sash (un shell avec de nombreux utilitaires standard intégrés). Cependant, ce n'est pas si important si votre système peut facilement être démarré à partir d'un CD de secours ou d'une clé USB.
la source
Le shell de connexion d'un utilisateur n'affecte pas le processus de démarrage. Vous pouvez définir ce shell à votre guise. Tous les systèmes n'ont pas bash et ils fonctionnent bien. De plus, si c'est
/usr/bin/zsh
mal installé, tous les shells du système devraient être installés/bin
. Cependant, vous ne devriez pas changer/bin/sh
pour pointer vers autre chose que la valeur par défaut (à moins que vous ne sachiez ce que vous faites) comme de nombreux scripts#!/bin/sh
qui pointent généralement vers bash, quand ils devraient avoir#!/bin/bash
parce qu'ils utilisent des bashismes et d'autres comportements qui ne le feront pas travailler surzsh
oudash
.la source
bash
et je suiszsh
en/bin
J'ai bash comme shell par défaut pour root. J'ai utilisé zsh pendant un certain temps, mais je suis ensuite retourné à bash . Le shell que vous utilisez n'a pas beaucoup d'importance.
Ce n'est qu'un problème, si plusieurs personnes ont un accès root. Dans ce cas, vous pouvez sélectionner un «dénominateur commun» qui est généralement bash, car il s'agit du shell le plus utilisé.
la source
En ce qui concerne Solaris / illumos, la mini-FAQ Solaris Root Shell mentionne
Donc, oui, si vous utilisez Solaris ou illumos, c'est bien d'utiliser des shells autres que
sh
.la source