我使用的是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
?
我正在使用连接到部门服务器的大学机器,但这台本地机器仅供我使用(即我对本地的所有设备都有控制权/权限)。
答案 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!)。
另见:
.bashrc
, .bash_profile
and .environment
? 毫无疑问,还有其他相关的相关问题。
*
在这里的办公室,有一个基于LDAP的系统,但我们的用户名出现在机器上的密码文件中。但是,密码文件每小时左右重建一次,因此您无法对本地密码文件进行持久更改。有时会有一个足够大的机会来完成一些有用的工作,但它正在与系统作斗争并且基本上适得其反。