当前位置: 首页 > article >正文

Linux Shell 切换

在 Linux 系统中,切换至 Bash Shell

在 Linux 系统中,切换至 Bash Shell 的方法如下:
临时切换到 Bash

直接在终端输入以下命令,启动一个新的 Bash 会话:
bash

退出时输入 exit 或按 Ctrl+D 返回原 Shell。
永久切换默认 Shell

使用 chsh 命令修改默认 Shell(需管理员权限或当前用户密码):
chsh -s /bin/bash

修改后需 重新登录终端 或重启系统生效。
验证当前 Shell

查看当前 Shell:

echo $SHELL

若输出 /bin/bash 则表示已切换成功。
检查 Bash 版本:

bash --version

其他注意事项

权限问题:若 chsh 提示权限不足,可尝试:

sudo chsh -s /bin/bash 用户名

可用 Shell 列表:查看系统支持的 Shell:

cat /etc/shells

确保 /bin/bash 在列表中。
恢复原 Shell

若需恢复为原 Shell(如 Zsh),运行:
chsh -s /bin/zsh

如有其他问题(如命令无效或 Shell 未安装),请提供具体错误信息以便进一步排查。


查看所有已安装的 Shell:

在 Linux 系统中,可以通过以下方法查看所有已安装的 Shell:
查看 /etc/shells 文件

该文件列出了系统支持的所有合法 Shell:
cat /etc/shells

示例输出:

/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/zsh
/bin/tcsh
/bin/csh

使用 chsh -l(部分系统支持)

chsh -l

功能与 cat /etc/shells 相同,但并非所有 Linux 发行版都支持此命令。
查看当前使用的 Shell

当前会话的 Shell:

echo $0  # 输出如 /bin/bash 或 bash

用户默认登录 Shell:

echo $SHELL  # 显示 /etc/passwd 中配置的默认 Shell

其他相关命令

通过 /etc/passwd 查看用户与 Shell 的关联:

grep "^$USER" /etc/passwd | cut -d: -f7

使用 ps 命令查看当前 Shell 进程:

ps -p  -o comm=

注意事项
/bin/sh 通常是 bash 或 dash 的符号链接,具体取决于系统。

若 /etc/shells 不存在,可能是系统未正确配置,需手动检查 /bin/ 或 /usr/bin/ 下的 Shell 可执行文件。

如需切换 Shell,可使用 chsh -s /path/to/shell(需重新登录生效)。


添加合法 shell

在 Linux 系统中,添加合法的 Shell 需要以下步骤:
查看当前可用的 Shell

首先,检查 /etc/shells 文件,查看系统已支持的 Shell:
cat /etc/shells

示例输出:

/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/zsh
/bin/tcsh
/bin/csh

安装新的 Shell

如果目标 Shell 不在 /etc/shells 中,需先安装。常见 Shell 的安装方法如下:

安装 Zsh
Debian/Ubuntu:

sudo apt update && sudo apt install zsh

RHEL/CentOS/Fedora:

sudo dnf install zsh  # 或 sudo yum install zsh

安装 Fish
Debian/Ubuntu:

sudo apt install fish

RHEL/CentOS:

sudo dnf install fish

其他 Shell(如 Ksh、Tcsh)
sudo apt install ksh tcsh # Debian/Ubuntu
sudo dnf install ksh tcsh # RHEL/CentOS

将 Shell 添加到 /etc/shells

安装后,需手动将 Shell 的路径添加到 /etc/shells 文件,使其成为合法登录 Shell:
echo “/bin/zsh” | sudo tee -a /etc/shells # 以 Zsh 为例

或直接编辑文件:
sudo nano /etc/shells

添加路径(如 /bin/zsh)后保存。
验证并切换 Shell

验证是否添加成功:

cat /etc/shells | grep zsh

切换用户默认 Shell:

chsh -s /bin/zsh  # 切换当前用户

sudo chsh -s /bin/zsh username # 切换其他用户

需重新登录生效。

注意事项
权限要求:修改 /etc/shells 需 root 权限。

路径正确性:确保添加的 Shell 路径真实存在(可通过 which zsh 检查)。

安全性:避免添加非标准或未经验证的 Shell,可能引发安全风险。

如需进一步调整(如限制用户登录),可参考 /sbin/nologin 的用法。

http://www.lryc.cn/news/2387800.html

相关文章:

  • ProfiNet转Ethernet/IP网关选型策略适配西门子S7-1500与罗克韦尔ControlLogix5580的关键指标对比
  • AWS WebRTC:获取信令服务节点和ICE服务节点
  • [图文]图6.3会计事项-Fowler分析模式的剖析和实现
  • [Linux] 利用systemd实现周期性执行任务(DDNS设置案例)
  • maven 3.0多线程编译提高编译速度
  • Dalvik虚拟机、ART虚拟机与JVM的核心区别
  • Unity 3D AssetBundle加密解密教程
  • 【Linux】shell脚本的常用命令
  • Netty应用:从零搭建Java游戏服务器网络框架
  • Pycharm and Flask 的学习心得(9)
  • Linux初始-环境安装(2)
  • Nginx 安全防护与 HTTPS 部署实战笔记
  • Python Day34 学习
  • 【ASR】基于分块非自回归模型的流式端到端语音识别
  • 国芯思辰|国产FRAM SF25C128助力监控系统高效低功耗解决方案,对标MB85RS128/FM25V01
  • 攻防世界逆向刷题笔记(新手模式9-1?)
  • 【golang】能否在遍历map的同时删除元素
  • 制作一款打飞机游戏58:子弹模式组合
  • 使用新一代达梦管理工具SQLark,高效处理 JSON/XML 数据!
  • Qt基础:数据容器类
  • Vue3监听对象数组属性变化方法
  • 深入了解PyTorch:起源、优势、发展与安装指南
  • DeepSeek智能对话助手项目
  • 浅谈Mysql的MVCC机制(RC与RR隔离级别)
  • uniapp-商城-72-shop(5-商品列表,购物车实现回顾)
  • 【git】 pull + rebase 或 pull + merge什么区别?
  • 1. 编程语言进化史与JavaScript
  • Vue3 中 Axios 深度整合指南:从基础到高级实践引言
  • MySQL#Select语句执行过程
  • hbuilder中h5转为小程序提交发布审核