Comment passer de csh à bash en tant que shell par défaut

34

J'ai cshcomme shell par défaut, comme indiqué par echo $SHELL. Je veux passer à bashmon shell par défaut. J'ai essayé les approches suivantes en vain:

  1. Avec chshje reçois:

    chsh: can only change local entries; use ypchsh instead.
  2. Avec ypchshje reçois:

    ypchsh: yppasswdd not running on NIS master host ("dcsun2").

Je n'ai que .chsrcdans mon répertoire personnel et je ne trouve aucun .profilefichier dans /etc. Comment puis-je changer mon shell par défaut en bash?

Sumod
la source
4
Il pourrait être utile de savoir sur quel type d'Unix vous êtes.
enzotib

Réponses:

44
  1. Assurez-vous que vous avez bashinstallé.

  2. Apprenez l'emplacement de bash:

    which bash

    ou

    whereis bash

    Ci-dessous, je suppose que l'emplacement est /bin/bash.

    a) Si vous avez des droits d'administrateur, lancez simplement en tant que root:

    usermod -s /bin/bash YOUR_USERNAME

    (en remplaçant YOUR_USERNAMEpar votre nom d'utilisateur).

    b) Si vous n'avez pas adm. droits, vous pouvez toujours exécuter bash --loginà la connexion, en mettant la ligne ci-dessous à la fin de votre .cshrcou .profile(dans votre répertoire personnel):

    setenv SHELL /bin/bash
    exec /bin/bash --login
rozcietrzewiacz
la source
2b. Vérifiez si bashest énuméré /etc/shellsavec le chemin correct.
Manatwork
@manatwork Cela serait pertinent pour 2a , pas 2b. Et seulement utile dans une configuration système étrange / cassée pour déterminer pourquoi la solution n'a pas fonctionné.
rozcietrzewiacz
1
1. SHELL = / bin / bash donne une erreur de commande non trouvée. 2. Votre solution me donne un shell bash comme invite. Mais cela ne change pas mon shell de connexion. Merci pour l'aide en tout cas.
Sumod
1
Voici ce que j'ai fait pour résoudre ce problème. 1. exec / bin / bash --login dans le fichier .cshrc 2. définissez SHELL = / bin / bash puis exportez SHELL dans le fichier / etc / profile. Merci.
Sumod
2
Ah, désolé - je voulais dire que la première ligne devait être export SHELL=/bin/bash . En fait, il existe un meilleur moyen que cela - voir la mise à jour.
rozcietrzewiacz le
13

Contactez votre administrateur système. Il a mal arrangé les choses. Si vous êtes votre administrateur système, vous avez mal configuré les choses.

Le message d'erreur semble assez simple. Vous n'avez pas à yppasswdcourir sur dcsun2. CA devrait etre.

Cependant, une recherche rapide sur Google donne ce résultat, qui indique que vous obtiendrez cette erreur si elle yppasswdest exécutée à la fois sur le client et sur le serveur. Dans ce cas, désactivez-le sur le client.


Si vous êtes bloqué avec csh comme shell de connexion, vous pouvez toujours le faire appeler bash lorsque vous vous connectez. Placez les commandes suivantes dans votre ~/.login(voir aussi Modification du shell par défaut sans privilèges chsh ou administrateur ):

sleep 2
if (-x /usr/local/bin/bash) then
  exec /usr/local/bin/bash -l
endif

Remplacer /usr/local/bin/bash par le chemin approprié si nécessaire. Si tout fonctionne, supprimez-le sleep 2(ce qui met un délai pendant lequel vous pouvez appuyer sur Ctrl+Cpour passer à une invite csh, en cas de problème).

bahamat
la source