如果不在/ etc / passwd中,如何更改Ubuntu中的默认shell?

时间:2015-10-22 23:37:04

标签: linux shell

我使用的是Ubuntu 14.04,我的默认shell是/bin/sh。我想将其更改为/bin/bash

我读了几个解决方案(here's one),但到目前为止似乎没有任何工作。

我已尝试sudo chsh -s /bin/bash [username]chsh后跟/bin/bash,但我收到以下错误:

chsh: user [username] does not exist in /etc/passwd

我也试过手动编辑该文件。我有sudo权限,所以不是缺乏访问权限。

有没有人有任何建议?或者任何人都可以解释我如何添加用户名/etc/passwd

我正在使用连接到部门服务器的大学机器,但这台本地机器仅供我使用(即我对本地的所有设备都有控制权/权限)。

1 个答案:

答案 0 :(得分:10)

听起来机器已配置为使用除密码文件之外的其他内容来控制对计算机的访问。您可以查看/etc/nsswitch.conf文件以查看计算机的配置方式。

如果您运行grep username /etc/passwd,则可能无法输出。如果是这样,那么更改密码文件将无法帮助 * 。您需要找到控制您在计算机上的权限的系统,并在那里进行更改。它很可能是一个集中管理的基于LDAP的系统。您最好与该外部系统的管理员交谈。

如果要在本地修复它,可能需要修改.profile以执行所需的shell:

if [ "$SHELL" != "/bin/bash" ]
then
    export SHELL="/bin/bash"
    exec /bin/bash -l    # -l: login shell again
fi

我经常这样做;它或多或少存在于.cshrc file(对于csh),除了语法可能有点不同和无条件(如果它正在执行C shell启动文件,那就是错误的shell!)。

另见:

毫无疑问,还有其他相关的相关问题。

* 在这里的办公室,有一个基于LDAP的系统,但我们的用户名出现在机器上的密码文件中。但是,密码文件每小时左右重建一次,因此您无法对本地密码文件进行持久更改。有时会有一个足够大的机会来完成一些有用的工作,但它正在与系统作斗争并且基本上适得其反。