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

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

我读了几个解决scheme( 这里是一个 ),但似乎没有工作到目前为止。

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

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

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

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

我正在连接到部门的服务器上的大学机器,但这个本地机器是专为我使用(即我有控制权限的一切本地)。

这听起来像机器被配置,以便它使用密码文件以外的东西来控制对机器的访问。 您可以查看/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文件 (对于csh )中,除了语法可能有点不同而且无条件(如果它正在执行C shell启动文件,那是错误的shell!)。

也可以看看:

  • 如何从其他shell切换到Bash shell?
  • .bashrc.bash_profile.environment什么.environment

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


*在这里的办公室,有一个基于LDAP的系统,但我们的用户名出现在机器上的密码文件中。 但是,密码文件是每小时左右重新生成的,所以不能对本地密码文件进行持久更改。 有时候有足够的机会去完成一些有用的事情,但是它正在与系统作斗争,而且基本上会起反作用。