新闻详情

新闻详情

首页 / 资讯中心 / 详情

Linux chsh 命令详解:更换登录 Shell 的完整实战指南(linux-command 项目)

发布时间:2026/9/30 2:02:18来源:尧图网络
Linux chsh 命令详解:更换登录 Shell 的完整实战指南(linux-command 项目)
文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载导读chshchange shell是 Linux 系统中用于更换用户登录 Shell 的核心命令也是 linux-command 仓库中收录的常用系统管理工具之一。本文以 command/chsh.md 文档为基础结合仓库内用户管理相关命令文档如 useradd、usermod、nologin系统讲解 chsh 的语法、选项、底层原理与真实操作流程读完即可独立完成查看可用 Shell、切换 Shell、改回原 Shell的完整闭环操作。命令概述chsh 是做什么的chsh命令用来更换登录系统时使用的 shell。Linux 系统中每个用户都有一项默认登录 Shell 的配置它决定了用户通过终端或 SSH 登录后所进入的交互环境如 bash、zsh、sh 等。chsh 允许普通用户或管理员在不重建账号的前提下安全地变更这一设置。若在不指定任何参数与用户名称的情况下执行 chsh命令会以交互应答的方式进行设置——系统会提示输入新的 Shell 路径并在完成后反馈修改结果适合不熟悉命令行选项的用户使用。语法chsh(选项)(参数)选项-sshell 名称或--shellshell 名称更改系统预设的shell环境。 -l或--list-shells列出目前系统可用的shell清单 -u或--help在线帮助 -v或-version显示版本信息。参数用户名要改变默认shell的用户。实操一查看系统安装了哪些 Shell两种方法修改 Shell 之前首先需要确认系统中存在哪些可用的 Shell。文档给出了两种等效方法第一种使用 chsh -l 直接查看[rocrocketlocalhost ~]$ chsh -l /bin/sh /bin/bash /sbin/nologin /bin/zsh第二种查看 /etc/shells 文件[rocrocketlocalhost ~]$ cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/zsh其实chsh -l读取的正是/etc/shells这个文件。该文件是系统公认的合法 Shell 清单只有列在其中的 Shell 才能被 chsh 设置为登录 Shell这既是安全边界也是兼容性保证。值得留意的是输出中出现了/sbin/nologin。在 command/nologin.md 中有更详细的说明将某个用户的登录 Shell 设置为/sbin/nologin即可礼貌地拒绝该用户登录系统终端输出 This account is currently not available 并记录日志常用于仅需启动服务、无需交互登录的账号。这与chsh -l清单中的 nologin 项相互印证说明可用 Shell并不局限于交互式解释器。实操二查看当前正在使用的 Shell[rocrocketlocalhost ~]$ echo $SHELL /bin/bash注意SHELL一定要是大写。可以看到目前使用的 shell 是/bin/bash。$SHELL是登录时由系统根据/etc/passwd中该用户的 Shell 字段注入的环境变量因此它反映的是登录 Shell而不是临时执行的其他解释器。实操三把我的 Shell 改成 zsh假设系统中已安装 zsh如上述/bin/zsh执行[rocrocketlocalhost ~]$ chsh -s /bin/zsh Changing shell for rocrocket. Password: Shell changed. [rocrocketlocalhost ~]$使用 chsh 加选项-s就可以修改登录的 shell 了。此时你会发现执行echo $SHELL后仍然输出为/bin/bash这是因为该变量在本次会话登录时就已经固定需要重启重新登录你的 shell 才完全投入到 zsh 怀抱中去。底层原理chsh -s 修改的是 /etc/passwdchsh -s其实修改的就是/etc/passwd文件里和你的用户名相对应的那一行。现在来查看下[rocrocketlocalhost ~]$ cat /etc/passwd | grep ^rocrocket rocrocket:x:500:500:rocrocket,China:/rocrocket/PSB/home:/bin/zsh你可以发现输出内容的最后部分已经变成了/bin/zsh了。/etc/passwd中每一行以冒号分隔的字段依次是用户名、密码占位符、UID、GID、注释信息、家目录、登录 Shell。chsh 的核心工作就是替换最后这个字段。下次重启或重新登录的时候linux 就会读取这一字段来启动 shell 了。为什么普通用户也能修改自己的 Shell普通用户执行 chsh 时会被要求输入自己的登录密码如上例中的Password:提示这是系统对身份的一次复核而修改动作仅限定为该用户自己的 Shell 字段因此不会破坏系统其他账号的配置。管理员则可以直接指定用户名来修改任意用户的 Shell例如chsh -s /bin/zsh otheruser。实操四把 Shell 修改回 /bin/bash改回默认的 bash 同样一行命令即可[rocrocketlocalhost ~]$ chsh -s /bin/bash Changing shell for rocrocket. Password: Shell changed.同样地重新登录后生效可通过echo $SHELL验证是否恢复为/bin/bash。结合仓库源码chsh 在用户管理工具链中的位置在 linux-command 仓库中chsh 并非孤立存在它与一系列用户管理命令共同构成完整的账号管理链路从仓库文档中可以清晰看到它们的协作关系创建账号时的 Shell 预设command/useradd.md 中的-s, --shell SHELL选项用于在创建用户时直接指定登录 Shell未指定时则使用/etc/default/useradd中的默认值。这相当于在账号创建阶段就完成了 chsh 才能做的修改。事后修改 Shellchsh 正是对已存在账号执行同样修改的专用命令而 command/usermod.md 中的-sshell选项也可以修改用户登入后所使用的 shell与 chsh 功能等价适合需要在一条命令中同时修改其他账号属性如-L锁定、-G附加组的场景。禁止登录的 Shell 技巧command/nologin.md 演示了把/etc/passwd中用户 Shell 改为/sbin/nologin来禁止个别用户登录的方法——这正是 chsh -s /sbin/nologin 的典型应用场景常用于系统维护期间或服务账号。身份切换验证command/su.md 中的su -l选项在切换身份时会同时变更HOME、SHELL、USER、logname等环境变量因此切换后echo $SHELL会显示目标用户的登录 Shell可作为验证 chsh 修改是否生效的间接手段。可见从 useradd 创建、usermod/chsh 修改到 nologin 禁用Shell 字段始终是贯穿整个用户管理流程的关键配置项。使用注意事项与常见误区必须使用 /etc/shells 中的合法路径chsh 会校验-s指定的路径是否存在于/etc/shells中随意填写一个未登记的路径会被拒绝如需启用某个已安装但未登记的 Shell可先将其加入/etc/shells需要 root 权限。修改后不会立即生效$SHELL变量在会话登录时已固化执行 chsh 后需重新登录或重启终端才能看到变化这是文档实操中特别强调的易错点。权限区分普通用户只能修改自己的 Shell 且需输入密码root 用户可以配合用户名参数修改任意账号例如批量将服务账号的 Shell 统一改为/sbin/nologin。与临时切换区分chsh 是永久修改登录配置若只想在本次会话临时使用其他 Shell直接执行该 Shell如zsh或使用su -s即可不会改动/etc/passwd。总结chsh 是 Linux 用户管理中小而关键的命令语法只有-s、-l、-u、-v四个核心选项参数仅需一个用户名但其背后关联着/etc/shells的合法性校验、/etc/passwd的字段语义以及登录 Shell 的生效机制。掌握chsh -l查看清单、chsh -s 路径切换、echo $SHELL验证这一套操作组合再结合仓库中 useradd、usermod、nologin 等命令文档即可在实际工作中灵活完成 Shell 环境的定制与用户登录策略的管理。赞分享文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载相关推荐Linux 光盘刻录命令 cdrecord 实战指南linux-command 命令手册详解Linux 光盘刻录命令 cdrecord 实战指南linux command 命令手册详解 本篇指南聚焦 Linux 系统下的经典刻录命令 cdrecor文档教程mistral.rs 代码执行审批Code-Execution Approval流程实战基于 agent_permissionask 的 Agent 安全闭环mistral.rs 代码执行审批Code Execution Approval流程实战基于 agent_permissionask 的 Agent文档教程在 Next.js 中构建 AI 工具assistant-ui use generative 指令与 withAui 编译器集成实战在 Next.js 中构建 AI 工具assistant ui use generative 指令与 withAui 编译器集成实战 assistant文档教程上一篇ChatGPT-CodeReview基于AI的智能代码审查机器人下一篇res-downloader 实战教程本地代理一键抓取视频号、抖音、网页图片5 分钟跑通下载流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

华联环球的信息保护与用户隐私 2026/9/30 4:00:46

华联环球的信息保护与用户隐私

在数字时代,信息保护与隐私安全日益重要。华联环球把用户的信息保护放在重要的位置。用户在平台上留下的信息,涉及隐私与资产,需要得到妥善的保护。华联环球深知,信息保护是用户信任平台的基础之一。因此,平台在信息保…

阅读更多 →
基于Spring Boot+SSM的宠物领养救助系统设计复盘 2026/9/30 4:00:46

基于Spring Boot+SSM的宠物领养救助系统设计复盘

去年我接了个宠物救助站的数字化需求,对方负责人开门见山就跟我说:我们站里每一只猫狗从进站到被领养,中间的救助记录、疫苗情况、领养人审核、回访跟进全都写在纸质档案本上,翻起来费劲,还经常丢失。于是就有了这套基…

阅读更多 →
SpringBoot+SSM+Thymeleaf剧团管理系统实战:从数据库设计到上线部署 2026/9/30 4:00:46

SpringBoot+SSM+Thymeleaf剧团管理系统实战:从数据库设计到上线部署

前阵子有朋友把一份毕设项目压缩包丢给我,文件夹名是 springboot_ssm872曲艺黄梅戏剧团管理系统哈尔。第一次看到这个命名,我的第一反应是:SpringBoot 和 SSM 怎么会同时出现在一个项目名里?后来打开源码发现,实际用的…

阅读更多 →
云平台运维与运营服务方案:从自动化工具到可执行服务编排的落地指南 2026/9/30 4:00:46

云平台运维与运营服务方案:从自动化工具到可执行服务编排的落地指南

简介:面向互联网企业云平台运维与运营管理需求,提供一份体系化的服务方案文档。方案以ITSS信息技术服务标准为指引,围绕运维全生命周期进行设计,涵盖服务规划设计、部署实施、服务运营、持续改进与监督管理等阶段,并包…

阅读更多 →
模型优化器实战:量化、剪枝、蒸馏与图优化全链路解析 2026/9/30 4:00:46

模型优化器实战:量化、剪枝、蒸馏与图优化全链路解析

1. 从“模型优化器”这个热词说起:它到底在解决什么问题“Model-Optimizer”这个词最近在技术圈被反复提起,很多人第一次看到会以为它只是某个具体工具的名字,其实它更像是一类技术角色的统称——凡是能在模型训练、推理、部署环节里&#xf…

阅读更多 →
从零构建buzz模块:低干扰提醒与热点聚合的工程实践 2026/9/30 4:00:40

从零构建buzz模块:低干扰提醒与热点聚合的工程实践

1. 从一个词说起:为什么“buzz”值得单独拎出来聊“buzz”这个词,第一次看到的人多半会愣一下——它既不是某个具体产品的名字,也不像“某某系统”“某某工具”那样一眼能看出用途。但恰恰是这种模糊感,让它成了一个特别有意思的切…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉