登录 Shell 和非登录 Shell

1. 比喻法讲解

想象你要进入一座神秘的城堡(系统),有两种不同的入口通道,分别对应登录 Shell 和非登录 Shell。

登录 Shell 就像是城堡的主大门入口。当你通过主大门进入城堡时(通过登录 Shell 启动会话),城堡会对你进行全面的身份验证和准备工作,比如检查你的通行证(用户凭证),为你分配专门的房间(初始化环境变量),给你发放城堡地图和各种必要工具(加载启动脚本),让你能够以正式成员的身份在城堡中活动。这是一个相对完整、全面的进入流程,适用于你首次进入城堡(登录系统)的场景。

而非登录 Shell 则好比城堡内部的一个侧门。当你已经在城堡内,从这个侧门进入另一个区域时(启动非登录 Shell),城堡不会再次进行全面的身份验证等复杂流程,因为它认为你已经是城堡的合法成员了。你可以直接进入,并且使用之前主大门进入时所获得的各种资源和配置,只是不会重复那些首次进入时的初始化步骤。这种方式更快捷、轻便,适用于你在城堡内临时需要执行一些小任务(在已登录系统中执行特定命令或脚本)的场景。

2. 内在化引导

结合你在办公室工作的场景来理解。假设办公室是一个系统,登录 Shell 就像你早上来上班,刷卡进入办公室(登录系统)。此时,公司会给你分配当天的工作任务(初始化环境变量),打开你的专属办公软件和文档(加载启动脚本),为你一天的工作做好全面准备。

而非登录 Shell 则像你在办公室里面,中途打开一个新的应用程序窗口来完成某项特定任务。你不需要再次刷卡确认身份(无需重复登录验证),并且可以直接使用已经准备好的办公环境(继承登录 Shell 的环境配置),快速开始工作。

3. 流程记事(对比步骤)

  • 启动方式
    • 登录 Shell:通常在用户登录系统时启动。例如,在 Linux 系统中,通过控制台登录、SSH 远程登录等方式,输入用户名和密码成功登录后,启动的就是登录 Shell。它会读取并执行一系列与用户登录相关的启动脚本。
    • 非登录 Shell:在已经登录系统的会话中启动。比如在 Linux 终端中输入 bash 命令,就会启动一个非登录 Shell。它不会重复登录时的验证过程,而是基于当前已有的登录环境运行。
  • 配置文件加载
    • 登录 Shell:在 Linux 系统中,登录 Shell 会依次读取 /etc/profile 以及用户主目录下的 ~/.bash_profile~/.bash_login~/.profile(按顺序查找,找到一个就停止)等配置文件。这些文件用于设置系统级和用户级的环境变量、别名、启动脚本等,为用户的整个会话环境进行初始化配置。
    • 非登录 Shell:非登录 Shell 一般会读取 ~/.bashrc 文件(在某些系统中,也可能会读取 /etc/bashrc,但这通常由系统管理员配置决定)。这个文件主要用于设置一些局部的、交互式 shell 的配置,如命令提示符样式、自定义函数等,它是在已有的登录环境基础上进行补充配置。
  • 环境变量处理
    • 登录 Shell:会根据上述配置文件全面初始化环境变量。例如,设置 PATH 变量来指定命令的搜索路径,以便用户可以方便地执行系统命令和自己安装的软件命令。这些环境变量在整个登录会话期间都有效。
    • 非登录 Shell:会继承登录 Shell 已经设置好的环境变量,然后再根据 ~/.bashrc 文件中的设置进行局部调整。例如,如果在 ~/.bashrc 中添加了新的 PATH 路径,只会在当前非登录 Shell 会话中生效,对其他非登录 Shell 或登录 Shell 会话无影响。
  • 应用场景
    • 登录 Shell:适用于用户首次登录系统,需要全面初始化工作环境的场景。例如,系统管理员登录后可能需要加载特定的管理工具和环境配置,以便进行系统维护和管理任务。
    • 非登录 Shell:常用于用户在已登录系统中,临时需要执行一些特定命令或脚本的情况。比如,你在已经登录的系统中,想要快速测试一个新写的 shell 脚本,启动一个非登录 Shell 来执行脚本会更加便捷,因为它不需要重复登录的过程和全面的初始化配置。

4. 画图表法

以下用表格对比展示登录 Shell 和非登录 Shell 的主要区别:

对比项目登录 Shell非登录 Shell
启动时机用户登录系统时在已登录系统的会话中手动启动
启动方式示例通过控制台登录、SSH 远程登录在终端输入 bash 命令
配置文件加载/etc/profile 及用户主目录下的 ~/.bash_profile~/.bash_login~/.profile(三选一)~/.bashrc(可能读取 /etc/bashrc
环境变量处理全面初始化环境变量继承登录 Shell 的环境变量并局部调整
应用场景用户首次登录系统,全面初始化工作环境在已登录系统中临时执行特定命令或脚本

通过这个表格,可以清晰地看到登录 Shell 和非登录 Shell 在各个方面的差异,帮助你更好地理解和区分它们,从而在实际使用中根据需求选择合适的 Shell 类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸭梨山大哎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值