it-swarm-eu.dev

Jak změnit z csh na bash jako výchozí shell

Jako výchozí Shell mám csh, jak ukazuje echo $Shell. Chci přepnout na bash jako můj výchozí Shell. Vyzkoušel jsem následující přístupy bez úspěchu:

  1. S chsh dostanu:

    chsh: can only change local entries; use ypchsh instead.
    
  2. S ypchsh dostanu:

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

Mám jen .chsrc ve svém domovském adresáři a nemůžu najít žádné .profile soubory v /etc. Jak mohu změnit svůj výchozí Shell na bash?

34
Sumod
  1. Ujistěte se, že máte nainstalován bash.

  2. Naučte se umístění bash:

    which bash
    

    nebo

    whereis bash
    

    Níže předpokládám, že umístění je /bin/bash.

    a) Pokud máte administrátorská práva, spusťte jako root:

    usermod -s /bin/bash YOUR_USERNAME
    

    (nahrazující YOUR_USERNAME s vaším uživatelským jménem).

    b) Pokud nemáte adm. práva, stále můžete spustit bash --login při přihlášení, vložením spodního řádku na konci vašeho .cshrc nebo .profile (ve vašem domovském adresáři):

    setenv Shell /bin/bash
    exec /bin/bash --login
    
44
rozcietrzewiacz

Obraťte se na správce systému. Postavil se špatně. Pokud jste vy správcem systému, jste nastavili špatně .

Chybová zpráva vypadá docela rovně vpřed. Na dcsun2 nemáte spuštěn yppasswd. To by mělo být.

Ale rychlé vyhledávání na Googlu přichází s tento výsledek , což znamená, že tato chyba se zobrazí, pokud je na klientovi i na serveru spuštěn yppasswd. V tomto případě ji vypněte na klientovi.


Pokud jste jako přihlašovací schránka uvízli s programem csh, můžete při přihlášení stále vyvolat bash. Vložte do příkazů ~/.login (viz také Změna výchozího prostředí bez oprávnění chsh nebo administrátora ):

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

Nahradit /usr/local/bin/bash podle potřeby správnou cestou. Pokud všechno funguje, odeberte sleep 2 (což zpoždění, během kterého můžete stisknout Ctrl+C přejít na csh Prompt, v případě, že se něco pokazí).

13
bahamat