如何从 csh 更改为 bash 作为默认 shell

Sum*_*mod 36 shell

我有csh我的默认外壳,如echo $SHELL. 我想切换到bash我的默认 shell。我尝试了以下方法无济于事:

  1. 随着chsh我得到:

    chsh: can only change local entries; use ypchsh instead.
    
    Run Code Online (Sandbox Code Playgroud)
  2. 随着ypchsh我得到:

    ypchsh: yppasswdd not running on NIS master host ("dcsun2").
    
    Run Code Online (Sandbox Code Playgroud)

我只有.chsrc在我的主目录中,我.profile/etc. 如何将我的默认 shell 更改为bash

roz*_*acz 47

  1. 确保你已经bash安装。

  2. 了解位置bash

    which bash
    
    Run Code Online (Sandbox Code Playgroud)

    或者

    whereis bash
    
    Run Code Online (Sandbox Code Playgroud)

    下面,我假设位置是/bin/bash

    a) 如果您有管理权限,只需以 root 身份运行:

    usermod -s /bin/bash YOUR_USERNAME
    
    Run Code Online (Sandbox Code Playgroud)

    (替换YOUR_USERNAME为您的用户名)。

    b) 如果您没有管理员。权限,您仍然可以bash --login在登录时运行,通过将以下行放在的末尾.cshrc.profile(在您的主目录中):

    setenv SHELL /bin/bash
    exec /bin/bash --login
    
    Run Code Online (Sandbox Code Playgroud)

  • 啊,对不起 - 我的意思是第一行是`export SHELL=/bin/bash`。实际上有比这更好的方法 - 请参阅更新。 (2认同)

bah*_*mat 13

请联系您的系统管理员。他设置错了。如果是系统管理员,那么您的设置就错了。

错误消息看起来很简单。您没有yppasswd在 dcsun2 上运行。它应该是。

但是进行快速的谷歌搜索会得到这个结果,这表明如果yppasswd在客户端和服务器上都运行,你会得到这个错误。在这种情况下,请在客户端上将其关闭。


如果您坚持使用 csh 作为登录 shell,您仍然可以在登录时使其调用 bash。将以下命令放入您的~/.login(另请参阅在没有 chsh 或管理员权限的情况下更改默认 shell):

sleep 2
if (-x /usr/local/bin/bash) then
  exec /usr/local/bin/bash -l
endif
Run Code Online (Sandbox Code Playgroud)

/usr/local/bin/bash如有必要,请替换为正确的路径。如果一切正常,请删除sleep 2(这会造成延迟,在此期间您可以按Ctrl+C进入 csh 提示符,以防出现问题)。