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

mar*_*man 5 linux shell

我使用的是Ubuntu 14.04,我的默认shell是/bin/sh.我想改成它/bin/bash.

我读了几个解决方案(这里是一个),但到目前为止似乎没有任何工作.

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

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

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

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

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

Jon*_*ler 12

听起来好像机器已配置为使用密码文件以外的其他东西来控制对机器的访问.您可以查看该/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
Run Code Online (Sandbox Code Playgroud)

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

也可以看看:

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


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