如何在亚马逊EC2 Linux实例上更改Shell

4
我使用sudo yum install tcsh命令在我的全新亚马逊EC2实例上安装了c shell,但我不确定它是否正常工作,因为echo $SHELL命令始终返回/bin/bash。我不知道我做错了什么。
[ec2-user]$ which csh
/bin/csh
[ec2-user]$ sudo csh
[root]# echo $SHELL
/bin/bash
[root]# sudo chsh
Changing shell for root.
New shell [/bin/bash]: /bin/csh
Shell changed.
[root]# echo $SHELL
/bin/bash
[root]# 
2个回答

5

Amazon Linux 2没有安装chsh,因此在运行chsh之前,您必须先安装它。

sudo yum install util-linux-user

如果您想要更改当前登录帐户的shell(例如,对于您登录的ec2-user或其他非root用户),则可以交互式地运行chsh。无需使用sudo(如其他答案所述)。

要更改其他用户(例如root,另一个用户)的shell,则需要使用sudo

也不需要重新启动。更改将在下次登录时生效。出于安全考虑,您可能希望从不同的窗口登录(即在一个窗口中保持登录状态,而在另一个窗口中测试shell更改),以防输错内容而无法返回。


一切都正常工作,但现在更改shell时会要求输入ec2-user的密码。但我从未设置过密码。我该怎么办? - Anshuman
1
根用户始终可以为任何人设置属性。因此,既然“sudo”有效,您只需运行“sudo chsh ec2-user”。它不会提示您输入ec2-user的密码。同样,如果您想更改ec2-user的密码,根用户也可以这样做。只需运行“sudo passwd ec2-user”。 - Paco Hope
这个 sudo yum install util-linux-user 不起作用,因为我收到了错误信息 No package util-linux-user available. - Whitecat

4
这对我有用:

sudo chsh -s $(which zsh) $(whoami)

我想要从bash切换到zsh,但是你可以使用which csh代替。可能需要在之后重新启动实例。


这个命令运行了4个程序,而只需要运行1个。which 命令会告诉你 zsh 命令的位置,但如果 /etc/shells 中没有该命令,则该命令将失败。更改自己的 shell 不需要使用 sudo。当您可以只输入 $USER 并从环境中获取时,就不需要运行 whoami 程序。他们应该只需键入 chsh 并按回车键,但是在安装 chsh 之后才能这样做,因为它未安装在 Amazon Linux 2 上。 - Paco Hope

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接