Linux如何设置bash为默认shell

大部分情况下,Linux的默认shell是bash,但某些Linux发行版,例如Kali,默认的终端是zsh,本文以Kali为例,将Kali的默认shell从zsh改为bash。

其实Kali早期的shell也是bash,2020 版本之后:Kali团队将默认shell更改为zsh。zsh增加了很多功能,例如最直观的就是当你输入字母就会有补全提示,但这也给我带来很多困扰,尤其是我连接多个其他Linux终端的时候,服务器之间经常切换,就Kali用起来不一样,让我感到突兀,最严重的问题是我用了zsh之后,登录终端后,我的小键盘区按键无法使用,不知道什么情况,于是我决定将Kali的终端改成bash。

接下来我们首先使用命令来查看一下当前的shell,echo $SHELL ,这会查看使用哪个shell为默认shell。如下图所示:

第一种修改方式:命令行工具chsh

我目前的使用的用户是root,默认shell是zsh,我们首先用最简单的方式来修改root用户默认shell:

chsh -s /usr/bin/bash
  • chsh 是 "change shell" 的缩写,用于更改用户的默认登录 shell。
  • -s 是 chsh 的选项,表示指定新的 shell 路径。
  • /usr/bin/bash:这是bash的路径。

设置好之后,我们重启终端,就可以使用bash了。注意,这种方式只修改当前用户的默认shell,其他的用户不变。

第二种修改方式:修改/etc/passwd文件

第二种方式,非常规方式,直接修改/etc/passwd文件,注意,这个文件root才有更改权限。所以用root用户操作或者sudo命令执行。我这里是在虚拟机环境,所以我直接用root用户。

vim /etc/passwd

显示如下图所示:

这个文件记录着用户账户的基本信息,也包含每一个用户默认的shell,每一行用冒号分割成七个部分,每个部分的含义如下:

  1. 用户名:用户的登录名。
  2. 密码占位符:现代系统中通常是一个占位符(如 x),实际密码存储在 /etc/shadow 文件中。
  3. 用户 ID(UID):用户的唯一标识符。
  4. 组 ID(GID):用户所属主组的标识符。
  5. 用户信息:用户的描述性信息(如全名或联系方式)。
  6. 主目录:用户的主目录路径。
  7. 登录 shell:用户登录时使用的默认 shell。

这里面我们直接修改第一行root用户的第7项,将zsh改成bash。之后保存退出。
同样重新进入终端,我们就可以发现我们的shell变成了bash。

注意事项:

我们通过第二种方式也成功的更改了默认shell,其实这两种更改shell的原理是一样的,chsh命令也是通过修改系统配置文件/etc/passwd中对应用户的shell字段来实现shell的更改。相比之下,用第一种方式更为稳妥。另外还有一些注意点:

  1. chsh命令会验证用户指定的shell路径是否正确,并且该shell是否存在于系统中。如果输入错误,例如chsh -s /bin/lll,那么再次启动终端发现无法登录,所以当用chsh之后发现输出Warning,那么要重新设置成一个有效的路径。
    chsh -s /bin/lll
    chsh: Warning: /bin/lll is an invalid shell
    chsh: Warning: /bin/lll does not exist
  2. Linux系统通常会维护一个/etc/shells文件,其中列出了所有有效的登录shell。所以在更改用户的登录shell之前,最好先检查/etc/shells文件以确保所选择的shell是被允许的。
<think>嗯,用户想在Linux系统中把bash设置默认shell。首先,我需要回忆一下Linux中如何更改默认shell的方法。记得有几种方法,比如使用chsh命令,或者直接修改用户的配置文件,比如/etc/passwd。不过修改/etc/passwd可能不太安全,还是推荐用chsh吧。 然后,想到可能需要确认系统中是否安装了bash。虽然大多数Linux发行版默认都有bash,但有时候可能没有,或者用户可能用的是其他版本。这时候就需要用which bash或者whereis bash来查看路径,通常是在/bin/bash或者/usr/bin/bash。 接下来,用户可能遇到的问题是如何切换当前用户的shell,或者所有用户的。这时候chsh命令应该是最直接的。比如,运行chsh -s /bin/bash,然后输入密码,就可以修改当前用户的默认shell了。如果是为其他用户修改,可能需要root权限,比如sudo chsh -s /bin/bash username。 另外,用户可能需要知道如何验证是否修改成功。可以通过echo $SHELL或者查看/etc/passwd文件中对应的用户条目来确认。比如,执行grep username /etc/passwd,看看最后一个字段是不是/bin/bash。 还有,用户可能对chsh命令不熟悉,需要解释一下这个命令的作用和参数。比如,-s选项用来指定新的shell路径。同时,要提醒用户确保指定的shell路径确实存在于/etc/shells文件中,否则chsh可能会拒绝修改。这时候可能需要检查/etc/shells是否有/bin/bash,如果没有,可能需要手动添加,不过通常情况下安装bash后会自动添加进去。 还可能存在特殊情况,比如用户使用的是非交互式shell,或者某些服务账户,这时候修改默认shell可能需要特别注意。不过一般情况下,普通用户和root用户的修改方法是一样的,只是权限问题。 还有用户可能误操作,比如输错了shell的路径,导致无法登录。这时候需要告诉用户如何恢复,比如通过进入恢复模式或者使用其他已有shell权限的账户来修正。 另外,参考了提供的引用资料,比如引用[3]和[4]都提到了使用chsh命令来切换shell,而引用[5]则提到了修改默认shell的其他方法,比如直接编辑/etc/passwd,但这种方法有风险,所以不推荐。需要提醒用户优先使用系统提供的工具如chsh来安全地修改。 最后,要确保步骤清晰,分点说明,让用户能够一步步操作,并且给出验证方法,确保他们知道是否修改成功。同时,补充常见问题和注意事项,帮助用户避免常见错误,比如路径错误或权限不足的问题。</think>### 如何在Linux设置bash默认Shell #### 步骤1:确认系统已安装Bash 大多数Linux系统默认预装Bash,但需验证其路径: ```bash which bash # 输出应为/bin/bash或/usr/bin/bash ``` #### 步骤2:查看当前默认Shell ```bash echo $SHELL # 显示当前用户的默认Shell cat /etc/shells # 列出系统支持的合法Shell列表 ``` #### 步骤3:修改用户默认Shell 1. **为当前用户设置**: ```bash chsh -s /bin/bash # 输入后会要求验证用户密码[^4] ``` > 若报错`chsh: command not found`,需安装`util-linux`包 2. **为其他用户设置(需root权限)**: ```bash sudo chsh -s /bin/bash username # 替换username为目标用户名[^3] ``` #### 步骤4:验证修改结果 ```bash grep $USER /etc/passwd # 查看用户配置行末是否显示/bin/bash ``` #### 特殊情况处理 - **/etc/shells中无Bash路径**:手动添加`/bin/bash`到该文件 - **系统级默认设置**:修改`/etc/default/useradd`中的`SHELL`变量(需root权限)[^3] #### 注意事项 1. 修改后需重新登录生效 2. 避免直接编辑/etc/passwd文件,可能导致系统不稳定[^5] 3. Docker容器中需确保bash已安装且路径正确
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值