在Linux中更改默认shell

在Linux中更改默认shell,linux,bash,shell,environment,tcsh,Linux,Bash,Shell,Environment,Tcsh,如何更改默认shell?env命令当前显示: SHELL=/bin/tcsh 我想把它改成Bash。您应该在/etc中的某个地方有一个“骨架”,可能是/etc/skeleton,或者检查默认设置,可能是/etc/default或其他什么。这些脚本定义了登录期间设置的标准环境变量 如果只是为了您自己的帐户:检查(隐藏)文件~/.profile和~/.login。或者生成它们,如果它们不存在的话。登录过程也会对其进行评估 试试linux命令chsh 详细的命令是chsh-s/bin/bash。 它

如何更改默认shell?
env
命令当前显示:

SHELL=/bin/tcsh

我想把它改成Bash。

您应该在
/etc
中的某个地方有一个“骨架”,可能是
/etc/skeleton
,或者检查默认设置,可能是
/etc/default
或其他什么。这些脚本定义了登录期间设置的标准环境变量


如果只是为了您自己的帐户:检查(隐藏)文件
~/.profile
~/.login
。或者生成它们,如果它们不存在的话。登录过程也会对其进行评估

试试linux命令
chsh

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

以下引自手册页:

chsh命令更改用户登录shell。这决定了 名称 用户的初始登录命令。普通用户只能更改 登录shell,超级用户可以更改自己的登录名 不惜一切代价

此命令将永久更改默认登录shell


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

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

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

然后注销并登录

chsh:只能更改本地条目;改用ypchsh
。那么ypchsh没有任何
-s
option@ShaktiMalik我相信配置文件是
/etc/passwd
,但我没有仔细检查它。您必须注销并重新登录才能看到此更改。在我的情况下,我具有root访问权限,但不想干扰实际主机上的任何配置。我在
~/.profile
中添加了
exec/bin/bash
,这样我就可以直接登录到bash,而无需对服务器进行任何更改。(最初的默认shell只是
/bin/sh
)@BCqrstoO谢谢你。但是如果在bash中键入
exit
,会怎么样?您是直接注销服务器,还是直接退出bash并进入sh和注销服务器所需的另一个
exit
。在Red Hat Linux上,它是在
/etc/default/useradd
@geeboolya中指定的。您可以指定默认shell和登录shell的区别吗?Hi@Betlista默认shell是在创建新用户登录shell时用于新用户登录shell的shell,除非将特定shell作为参数提供。尝试
这可能是一个好主意在调用上述命令之前使用bash
;您的里程可能因位置而异。在我的例子中,它是在
/bin/bash
中找到的,我还可以补充说,
chsh
命令是
util linux
包的一部分;和
chsh-s$(哪个bash)$USER
的结果应该与上面的结果相同。还有
-l
选项:“打印外壳列表”。这是
chsh-s/bin/bash username
,适合你!当我尝试为不同的用户更改它时,这对我很有帮助