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:

bash 复制代码
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用户。

bash 复制代码
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,那么要重新设置成一个有效的路径。

    bash 复制代码
    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是被允许的。

相关推荐
一隅论数智1 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
未济1 天前
linux 配置环境变量
linux
傲世仙尊1 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
_艾伦 耶格尔.1 天前
进程间通信
linux
AI职业加油站1 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
深圳老胡1 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
Liuqy-051 天前
Linux IO编程——静态库、动态库
linux
Because_of_Her11 天前
并查集-听课笔记
笔记·算法·并查集
此冬歌咏1 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s