Jai été surpris de ne pas avoir trouvé cette question déjà sur le site. Donc, aujourdhui $
est arrivé après que je me suis connecté en tant que nouvel utilisateur. Cétait inattendu car linvite de mon utilisateur principal commence par username@computername:~$
.
Alors, comment puis-je changer autre shell à bash?
Commentaires
Réponse
En supposant que le shell inconnu prend en charge lexécution dune commande absolue, vous pouvez essayer: /bin/bash
Pour changer le shell par défaut, jutiliserais chsh(1)
. Exemple dutilisation: chsh -s /bin/bash $USER
Commentaires
- Chsh change-t-il définitivement le shell ou juste pour la session en cours ?
- @mouche de façon permanente; il modifie votre entrée dans
/etc/passwd
- @mouche,
chsh(1)
ne permettra que de passer à un shell répertorié dans/etc/shells
(et est probablement disponible).chsh -l
répertorie les alternatives. Attention, certains (commenologin
) sont définis pour des comptes qui ne doivent jamais être utilisés pour se connecter (belle façon de se verrouiller), il peut y avoir des ajouts locaux pour des usages spéciaux.
Réponse
Vous saisissez bash
. Si vous voulez que cela soit permanent, changez le shell par défaut en /bin/bash
en éditant /etc/passwd
.
Ici « s quelques extraits de mon /etc/passwd
:
avahi:x:84:84:Avahi daemon:/:/bin/false xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh postgres:x:88:88::/var/lib/postgres:/bin/zsh bob:x:1001:1001::/home/bob:/bin/bash usbmux:x:140:140:usbmux user:/:/sbin/nologin
Le tout dernier champ contient le shell, Modification du champ après le dernier :
vers un shell valide ou non valide fonctionnera. /bin/false
et /sbin/nologin
signifient tous deux lutilisateur na pas de véritable shell de connexion, bien que si pam nest pas configuré correctement, cela ne signifie pas quils ne peuvent pas se connecter (jai signalé un bogue à ce sujet dans Arch Linux, car vous pouvez vous connecter graphiquement sans avoir de shell de connexion). /bin/bash
et /bin/zsh
sont tous deux des shells valides, voir /etc/shells
pour une liste des shells valides sur vos systèmes. Voici « mon /etc/shells
si vous » êtes intéressé.
/bin/sh /bin/bash /bin/ksh /bin/zsh /bin/dash
Oui, vous pouvez utiliser chsh
ou usermod
pour faire la même chose, noubliez pas quil ne sagit que de fichiers texte structurés et de TIMTOWTDI.
Commentaires
- Vous souhaiterez probablement utiliser
chsh
au lieu de modifier manuellementpasswd
- @Michael il y a environ 5 (POOMA) façons différentes de changer le shell dans
/etc/passwd
Je nai ' pas envie de les énumérer , parce que je le fais toujours manuellement. chsh et usermod peuvent le faire tous les deux. - Jouer avec les fichiers de configuration est une mauvaise idée (TM), une erreur peut rendre le système inutilisable. Oui, cest souvent le seul / le plus rapide moyen, mais faites-le avec soin extrême .
Réponse
Si chsh ou si la modification manuelle de la configuration ne fonctionne pas, mais un script ~ / .profile est exécuté à la connexion, ajoutez cette ligne:
exec /bin/bash --login
Commentaires
- Après avoir cherché pendant un moment, cétait la solution dont javais besoin. Merci!
- Excellente idée, surtout si le shell a sélectionné les sources de ce fichier au démarrage …
-
touch ~/.bash_profile
ou autrement bash sexécutera en boucle: bash prend~/.profile
au cas où~/.bash_profile
ne ' Il existe.
$
est apparu plutôt queusername@computername:~$
ne ' t signifie quil nétait ' t bash. Le formatage exact de linvite est défini par la variable PS1, qui peut être configurée ou personnalisée différemment pour différents utilisateurs.echo $SHELL
pour savoir quel est votre shell actuel./bin/sh
ne signifie souvent ' que ' est généralement un lien symbolique vers autre chose. Je ' d typels -l /bin/sh
pour voir à quoi ' est un lien symbolique. Dans certains cas, le fait dêtre un lien symbolique vers quelque chose change son comportement, ' ne pense pas que bash est comme ça.bash
as/bin/sh
désactive de nombreuses fonctionnalités bash (il passe en mode de conformité POSIX).