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是被允许的。

相关推荐
B64A-消闲6 分钟前
case和字符串操作
linux·运维·服务器
崔高杰8 分钟前
On the Biology of a Large Language Model——Claude团队的模型理解文章【论文阅读笔记】其二——数学计算部分
论文阅读·人工智能·笔记·语言模型·nlp
Small踢倒coffee_氕氘氚10 分钟前
iPhone闹钟无法识别调休致用户迟到,苹果客服称会记录反馈
笔记·算法·灌灌灌灌
码农研究僧15 分钟前
Ubuntu 磁盘空间占用清理(宝塔)
linux·运维·ubuntu
{⌐■_■}15 分钟前
【计网】认识跨域,及其在go中通过注册CORS中间件解决跨域方案,go-zero、gin
java·linux·开发语言·c++·中间件·golang·gin
若疆赤云online18 分钟前
window和ubuntu自签证书
linux·运维·ubuntu
像风一样自由202020 分钟前
图像识别系统 - Ubuntu部署指南(香橙派开发板测试)-学习记录1
linux·学习·ubuntu
yangshuo128121 分钟前
新ubuntu物理机开启ipv6让外网访问
linux·运维·ubuntu
背书包的儿郎27 分钟前
docker--什么是docker
运维·docker·容器
绝顶少年31 分钟前
反向代理、负载均衡与镜像流量:原理剖析、区别对比及 Nginx 配置实践
运维·nginx·负载均衡