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.


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.


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


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.