运行chsh不会更改外壳


19

我想将我的shell从bash更改为zsh。

我尝试以zol用户身份登录时运行以下命令:

$ chsh -s /bin/zsh
$ sudo chsh -s /bin/zsh zol
$ su -c 'chsh -s /bin/zsh zol'
# The above all results with:
$ password:
$ chsh: Shell not changed.

# zsh exists in /etc/shells.. 
chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh

有什么事吗 我该如何解决?


您是否尝试像zol一样在不带任何参数的情况下运行“ chsh”?
乔治M

您是否在使用ldap / nis等?
Ulrich Dangel

更重要的是:它为什么不为您提供更多信息?该消息对于经验丰富的sysop可能很好,但是对于大多数人而言,这是完全不礼貌的。我5年来一直面临着同样的问题,人们想知道为什么Linux在过去的20年里没有花在台式机上。
flurbius

您期望外壳会立即更改?你改变你的登录shellchsh,这意味着你将不得不重新登录。
库萨兰达

Answers:


17

如果您在尝试更改信息时打开了/ etc / passwd(vim / etc / passwd),则不会保存用户帐户的修改。

替代方法:尝试使用usermod(作为zol):

$ usermod -s /bin/zsh 

要么

$ sudo usermod -s /bin/zsh zol

如果这也不起作用,请/etc/passwd手动进行编辑。

sudo vipw
# set zol's shell to /bin/zsh
:wq

6
请使用vipw而不是vim它们设置适当的文件锁。
Ulrich Dangel 2012年

“如果您打开/ etc / passwd,将不会保存用户帐户的修改”,但是为什么呢?
Thanatos 2015年

它也不起作用。当我重新启动Linux虚拟机(centos7)时,现在可以!
WeizhongTu

1

如果看到以下情况,何时运行“ chsh -l”:

/usr/bin/zsh
/bin/zsh

然后使用:

chsh -s /usr/bin/zsh

警告:这些命令已在Fedora 25上运行,在Ubuntu中,“-l”选项已退出。


-l对我来说是无效的选择。我使用的是Ubuntu 16.04
byxor 17/07/27

抱歉,我没有提供有关命令运行位置的发行版的信息。就我而言,我在Fedora 25上进行了测试。我尝试在ubuntu上使用,并确认选项“ -l”已退出。
lourencoccc

无论如何,chsh -s完美地工作。谢谢。
byxor

该选项在Manjaro上有效,但仍拒绝更改外壳。
flurbius

0

如果看到chsh: Shell not changed.,则可能意味着外壳已被更改。

检查列出了哪个shell:

cat /etc/passwd | grep `cd; pwd`

如果正确,请注销并重新登录以使更改生效。


0

刚遇到这个。无论我执行什么登录和注销操作,都不会更改我的shell,但它已在/ etc / shells和/ etc / passwd中列出。

终于到了我的头:也许我登录了另一个会话?

所以我做了

# who

它验证了我确实有来自其他计算机的其他开放会话:

dom  pts/0        Nov 6 13:53 (10.1.6.121)
dom  pts/1        Nov 5 12:30 (10.1.6.165)
dom  pts/2        Nov 4 12:33 (10.1.6.197)

然后我做了:

pkill -KILL -u dom

我立即注销,然后重新登录:瞧!外壳已更改

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.