J'ai été surpris de ne pas avoir déjà trouvé cette question sur le site. Donc, aujourd'hui $
est arrivé après que je me suis connecté en tant que nouvel utilisateur. Cela était inattendu car l'invite de mon utilisateur principal commence par username@computername:~$
.
Alors, comment puis-je passer de cet autre shell à bash?
$
arrivé queusername@computername:~$
ça ne veut pas dire que c'était bash. Le formatage exact de l'invite 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
souvent ne veut pas dire grand chose, c'est en général un lien symbolique vers autre chose. Je taperaisls -l /bin/sh
pour voir ce que c'est un lien symbolique vers. Dans certains cas, être un lien symbolique vers quelque chose change son comportement, je ne pense pas que bash soit comme ça.bash
as/bin/sh
désactive de nombreuses fonctionnalités de bash (passe en mode de conformité POSIX).Réponses:
En supposant que le shell inconnu supporte l'exécution d'une commande absolue, vous pouvez essayer:
/bin/bash
Pour changer le shell par défaut, je voudrais utiliser
chsh(1)
. Exemple d'utilisation:chsh -s /bin/bash $USER
la source
/etc/passwd
chsh(1)
ne permettra que de passer à un shell listé dans/etc/shells
(et disponible, vraisemblablement).chsh -l
liste les alternatives. Soyez prudent, certains (commenologin
) sont définis pour des comptes qui ne doivent jamais être utilisés pour vous connecter (bon moyen de vous verrouiller), il pourrait y avoir des ajouts locaux pour des utilisations spéciales.Vous tapez dans
bash
. Si vous voulez que ce soit une modification permanente du shell/bin/bash
par défaut en le modifiant/etc/passwd
.Voici quelques extraits de mon
/etc/passwd
:Le tout dernier champ contient le shell. La modification du champ suivant le dernier
:
en un shell valide ou invalide fonctionnera./bin/false
et les/sbin/nologin
deux signifient que l'utilisateur n'a pas de shell de connexion réel, bien que si pam n'est pas configuré correctement, cela ne signifie pas qu'ils ne peuvent pas se connecter (j'ai signalé un bogue dans Arch Linux, car vous pouvez vous connecter graphiquement sans avoir un shell de connexion)./bin/bash
et/bin/zsh
sont tous deux des shells valides, voir/etc/shells
la liste des shells valides sur vos systèmes. Voici mon/etc/shells
si vous êtes intéressé.Oui, vous pouvez utiliser
chsh
ouusermod
faire les mêmes choses, rappelez-vous que ce ne sont que des fichiers texte structurés, et TIMTOWTDI.la source
chsh
au lieu de modifier manuellementpasswd
/etc/passwd
Je n'avais pas envie d'en lister une, parce que je le fais toujours manuellement. chsh et usermod peuvent le faire.Si chsh ou l'édition manuelle de la configuration ne fonctionne pas, mais qu'un script ~ / .profile est exécuté lors de la connexion, ajoutez cette ligne:
la source
touch ~/.bash_profile
ou sinon bash s’exécutera dans une boucle: bash prend~/.profile
au cas où cela~/.bash_profile
n’existerait pas.