Changer le shell par défaut sous Linux [fermé]

318

Comment est-il possible de changer le shell par défaut? La envcommande dit actuellement:

SHELL=/bin/tcsh

et je veux changer cela en Bash.

mahmood
la source
4
C'est une bonne question, mais elle pourrait être plus appropriée pour le site Linux QA.
BradleyDotNET
6
définissez-le dans / etc / passwd
resultsway

Réponses:

415

Essayez la commande linux chsh.

La commande détaillée est chsh -s /bin/bash. Il vous demandera d'entrer votre mot de passe. Votre shell de connexion par défaut est /bin/bashmaintenant. Vous devez vous déconnecter et vous reconnecter pour voir ce changement.

Ce qui suit est extrait de la page de manuel:

La commande chsh modifie le shell de connexion utilisateur. Cela détermine le nom de la commande de connexion initiale des utilisateurs. Un utilisateur normal peut uniquement changer le shell de connexion pour son propre compte, le superutilisateur peut changer le shell de connexion pour n'importe quel compte

Cette commande modifiera définitivement le shell de connexion par défaut.

Remarque: Si votre compte d'utilisateur est distant, par exemple lors de l'authentification Kerberos (par exemple, Enterprise RHEL), vous ne pourrez pas l'utiliser chsh.

Summer_More_More_Tea
la source
10
chsh: can only change local entries; use ypchsh instead. Alors ypchsh n'a aucune -soption
mahmood
10
@ShaktiMalik Je pense que le fichier de configuration l'est /etc/passwd, mais je ne l'ai pas revérifié.
Summer_More_More_Tea
30
Vous devez vous déconnecter et vous reconnecter pour voir ce changement.
Neil Traft
22
Dans mon cas, j'avais un accès root mais je ne voulais pas jouer avec des configurations sur l'hôte réel. J'ai ajouté exec /bin/bashà ~/.profileet cela m'a permis de me connecter directement à bash sans apporter de modifications au serveur. (Le shell par défaut d'origine était juste /bin/sh)
Paul Nelson Baker
2
@BCqrstoO Merci pour cela. Mais que faire si vous tapez exitbash? Voulez-vous déconnecter le serveur directement ou simplement quitter le bash et dans le sh et un autre exitrequis pour vous déconnecter du serveur?
Summer_More_More_Tea
148

Vous pouvez modifier le fichier passwd directement pour l'utilisateur particulier ou utiliser la commande ci-dessous

chsh -s /usr/local/bin/bash username

Ensuite, déconnectez-vous et connectez-vous

Glace du désert
la source
8
Probablement une bonne idée à essayer which bashavant d'appeler la commande ci-dessus; votre kilométrage peut varier selon l'emplacement. Dans mon cas, il a été trouvé dans/bin/bash
Martin Haeberli
Je peux également ajouter que la chshcommande fait partie du util-linuxpackage; et chsh -s $(which bash) $USERdevrait avoir le même résultat que ci-dessus.
Il y a aussi l' -loption: "imprimer la liste des coquilles".
Betlista
3
c'était chsh -s /bin/bash usernamepour moi
Salvatorelab
Je vous remercie! Cela m'a aidé en essayant de le changer pour un autre utilisateur
Tobias Feil
18

Vous devriez avoir un «squelette» quelque part /etc, probablement /etc/skeleton, ou vérifier les paramètres par défaut, probablement /etc/defaultou quelque chose. Ce sont des scripts qui définissent les variables d'environnement standard définies lors d'une connexion.

Si c'est juste pour votre propre compte: vérifiez le fichier (caché) ~/.profileet ~/.login. Ou générez-les, s'ils n'existent pas. Ceux-ci sont également évalués par le processus de connexion.

Arkascha
la source
5
Plus 1 pour répondre spécifiquement à la question (LE Shell par défaut). Sur Red Hat Linux, il est spécifié dans/etc/default/useradd
geedoubleya
@geedoubleya Pouvez-vous spécifier quelle est la différence entre le shell par défaut et le shell de connexion?
Betlista
1
Salut @Betlista Le shell par défaut est le shell qui est utilisé pour un nouveau shell de connexion des utilisateurs lors de leur création, sauf si un shell spécifique est fourni comme argument.
geedoubleya