Jak zmienić csh na bash jako domyślną powłokę

34

Mam cshjako domyślną powłokę, jak pokazuje echo $SHELL. Chcę przejść na bashmoją domyślną powłokę. Próbowałem następujących metod bezskutecznie:

  1. Dzięki chshotrzymuję:

    chsh: can only change local entries; use ypchsh instead.
  2. Dzięki ypchshotrzymuję:

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

Mam tylko .chsrcw katalogu domowym i nie mogę znaleźć żadnych .profileplików /etc. Jak mogę zmienić domyślną powłokę na bash?

Sumod
źródło
4
Warto wiedzieć, na jakim typie unixa jesteś.
enzotib

Odpowiedzi:

43
  1. Upewnij się, że masz bashzainstalowany.

  2. Poznaj lokalizację bash:

    which bash

    lub

    whereis bash

    Poniżej założę, że jest to lokalizacja /bin/bash.

    a) Jeśli masz uprawnienia administracyjne, po prostu uruchom jako root:

    usermod -s /bin/bash YOUR_USERNAME

    (zastąpienie YOUR_USERNAMEnazwą użytkownika).

    b) Jeśli nie masz adm. praw, nadal możesz po prostu uruchomić bash --loginprzy logowaniu, umieszczając poniższy wiersz na końcu swojego .cshrclub .profile(w katalogu domowym):

    setenv SHELL /bin/bash
    exec /bin/bash --login
rozcietrzewiacz
źródło
2b. Sprawdź, czy bashjest wyliczony /etc/shellsz poprawną ścieżką.
manatwork
@manatwork Dotyczyłoby to 2a , a nie 2b. I przydatne tylko w dziwnej / zepsutej konfiguracji systemu w celu ustalenia, dlaczego rozwiązanie nie działa.
rozcietrzewiacz
1
1. SHELL = / bin / bash podaje błąd nie znaleziono polecenia. 2. Twoje rozwiązanie daje mi powłokę bash jako monit. Ale to nie zmienia mojej powłoki logowania. Dziękuję za pomoc.
Sumod
1
Oto, co zrobiłem, aby to rozwiązać. 1. exec / bin / bash - zaloguj się w pliku .cshrc 2. ustaw SHELL = / bin / bash, a następnie wyeksportuj SHELL do pliku / etc / profile. Dzięki.
Sumod
2
Ach, przepraszam - miałem na myśli pierwszą linię export SHELL=/bin/bash. W rzeczywistości istnieje lepszy sposób - patrz aktualizacja.
rozcietrzewiacz
13

Skontaktuj się z administratorem systemu. Źle skonfigurował. Jeśli jesteś administratorem systemu , to źle skonfigurowałeś.

Komunikat o błędzie wygląda całkiem prosto. Nie masz yppasswduruchomionego na dcsun2. Powinno być.

Ale szybkie wyszukiwanie google daje wynik, który wskazuje, że pojawi się ten błąd, jeśli yppasswddziała zarówno na kliencie, jak i na serwerze. W takim przypadku wyłącz go na kliencie.


Jeśli utkniesz z csh jako powłoką logowania, nadal możesz wywołać bash podczas logowania. Wprowadź w swoim poleceniu następujące polecenia ~/.login(zobacz także Zmienianie domyślnej powłoki bez uprawnień chsh lub uprawnień administratora ):

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

W /usr/local/bin/bashrazie potrzeby zastąp właściwą ścieżką. Jeśli wszystko działa, usuń sleep 2(co powoduje opóźnienie, podczas którego możesz nacisnąć, Ctrl+Caby przejść do monitu csh, na wypadek, gdyby coś poszło nie tak).

bahamat
źródło