So wechseln Sie von csh zu bash als Standardshell

34

Ich habe cshals Standard-Shell, wie von gezeigt echo $SHELL. Ich möchte bashals meine Standard-Shell wechseln . Ich habe die folgenden Ansätze ohne Erfolg versucht:

  1. Mit chshbekomme ich:

    chsh: can only change local entries; use ypchsh instead.
  2. Mit ypchshbekomme ich:

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

Ich habe nur .chsrcin meinem Heimatverzeichnis und ich kann keine .profileDateien in finden /etc. Wie kann ich meine Standard-Shell auf ändern bash?

Sumod
quelle
4
Es kann hilfreich sein zu wissen, auf welchem ​​Unix-Typ Sie sich befinden.
Enzotib

Antworten:

43
  1. Stellen Sie sicher, dass Sie bashinstalliert haben.

  2. Erfahren Sie den Standort von bash:

    which bash

    oder

    whereis bash

    Im Folgenden werde ich davon ausgehen, dass der Standort ist /bin/bash.

    a) Wenn Sie Administratorrechte haben, starten Sie einfach als root:

    usermod -s /bin/bash YOUR_USERNAME

    (Ersetzen YOUR_USERNAMEdurch Ihren Benutzernamen).

    b) Wenn Sie keine Adm haben. Rechte können Sie immer noch nur bash --loginbei der Anmeldung ausführen , indem Sie die folgende Zeile am Ende Ihres .cshrcoder .profile(in Ihrem Home-Verzeichnis) einfügen:

    setenv SHELL /bin/bash
    exec /bin/bash --login
    
rozcietrzewiacz
quelle
2b. Überprüfen Sie, ob bashin aufgelistet wird /etc/shellsmit richtigen Pfad.
Manatwork
@manatwork Das wäre relevant für 2a , nicht 2b. Und nur nützlich in einem seltsamen / kaputten System-Setup, um festzustellen, warum die Lösung nicht funktioniert hat.
Rozcietrzewiacz
1
1. SHELL = / bin / bash gibt einen nicht gefundenen Fehler aus. 2. Ihre Lösung gibt mir eine Bash-Shell als Eingabeaufforderung. Es ändert aber nichts an meiner Login-Shell. Vielen Dank für die Hilfe.
Sumod
1
Folgendes habe ich getan, um dieses Problem zu beheben. 1. exec / bin / bash --login in der .cshrc-Datei 2. setze SHELL = / bin / bash und exportiere dann SHELL in die / etc / profile-Datei. Vielen Dank.
Sumod
2
Ah, sorry - ich meinte die erste Zeile zu sein export SHELL=/bin/bash. Eigentlich gibt es einen besseren Weg - siehe Update.
Rozcietrzewiacz
13

Wenden Sie sich an Ihren Systemadministrator. Er hat alles falsch gemacht. Wenn Sie Ihr Systemadministrator sind, haben Sie die Dinge falsch eingestellt.

Die Fehlermeldung sieht ziemlich direkt aus. Sie haben nicht yppasswdauf Dcsun2 ausgeführt. Es sollte sein.

Bei einer schnellen Google-Suche wird dieses Ergebnis angezeigt, was darauf hinweist, dass dieser Fehler auftritt, wenn yppasswder sowohl auf dem Client als auch auf dem Server ausgeführt wird. In diesem Fall schalten Sie es auf dem Client aus.


Wenn Sie mit csh als Anmeldeshell nicht weiterkommen, können Sie Bash trotzdem aufrufen, wenn Sie sich anmelden. Fügen Sie die folgenden Befehle in Ihre ein ~/.login(siehe auch Ändern der Standardshell ohne chsh- oder Administratorrechte ):

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

/usr/local/bin/bashBei Bedarf durch den richtigen Pfad ersetzen . Wenn alles funktioniert, entfernen Sie sleep 2(wodurch eine Verzögerung entsteht, während der Sie drücken können Ctrl+C, um zu einer csh-Eingabeaufforderung zurückzukehren, falls etwas schief geht).

Bahamat
quelle