在Linux中更改默认Shell


317

如何更改默认外壳?该env命令当前显示:

SHELL=/bin/tcsh

我想将其更改为Bash。


4
这是一个很好的问题,但它可能更适合Linux QA站点。
BradleyDotNET 2014年

6
将其设置在/ etc / passwd
resultsway 2014年

Answers:


414

尝试linux命令chsh

详细命令是chsh -s /bin/bash。它将提示您输入密码。/bin/bash现在,您的默认登录shell是。您必须注销并重新登录才能看到此更改。

手册页中引用了以下内容:

chsh命令更改用户登录外壳。这确定了用户初始登录命令的名称。普通用户只能更改其自己帐户的登录外壳,超级用户可以更改任何帐户的登录外壳

此命令将永久更改默认登录外壳。

注意:如果您的用户帐户是远程的,例如Kerberos身份验证(例如Enterprise RHEL),则您将无法使用chsh


10
chsh: can only change local entries; use ypchsh instead。然后ypchsh没有任何-s选择
mahmood 2012年

10
@ShaktiMalik我相信配置文件是/etc/passwd,但是我没有仔细检查它。
Summer_More_More_Tea 2014年

30
您必须注销并重新登录才能看到此更改。
尼尔·特拉夫特

22
就我而言,我具有root用户访问权限,但不想弄乱实际主机上的任何配置。我添加exec /bin/bash~/.profile,这使我可以直接登录bash,而无需对服务器进行任何更改。(原始的默认Shell只是/bin/sh
Paul Nelson Baker

2
@BCqrstoO谢谢你。但是,如果您输入exitbash怎么办?您将直接注销服务器还是退出bash并进入sh,然后exit退出该服务器?
2014年

148

您可以直接为特定用户更改passwd文件,或使用以下命令

chsh -s /usr/local/bin/bash username

然后注销并登录


8
which bash在调用上述命令之前尝试一个好主意;您的里程可能因位置而异。就我而言,它是在/bin/bash
Martin Haeberli,2016年

我还可以补充一点,chsh命令是util-linux程序包的一部分;并且chsh -s $(which bash) $USER结果应与上述相同。

还有一个-l选项:“ shell的打印列表”。
Betlista

3
这是chsh -s /bin/bash username给我的
Salvatorelab

谢谢!这在尝试为其他用户进行更改时对我有所帮助
Tobias Feil

18

你应该有一个“骨架”的地方/etc,也许/etc/skeleton,或检查的默认设置,可能是/etc/default什么。这些是定义登录时设置的标准环境变量的脚本。

如果仅用于您自己的帐户:检查(隐藏)文件~/.profile~/.login。或生成它们(如果它们不存在)。这些也将通过登录过程进行评估。


5
加1专门回答问题(默认外壳)。在Red Hat Linux上,它是在/etc/default/useradd
geedoubleya

@geedoubleya您可以指定默认外壳和登录外壳有什么区别吗?
Betlista

1
@Betlista,您好:默认外壳程序是用于创建新用户登录外壳程序的外壳程序,除非提供了特定的外壳程序作为参数。
geedoubleya
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.