news 2026/5/8 2:44:39

第14 章 使用 shell:初始化文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第14 章 使用 shell:初始化文件

两个特殊的文件,即 初始化文件(initialization file):

  • 登录文件(login file),存放着所有希望在每次登录时自动执行的命令;
  • 环境文件(environment file),存放着所有希望在新 shell 启动时自动执行的命令;

一些 shell 还支持注销文件(logout file),存放着注销时自动运行的命令。

总而言之,登录文件、环境文件和注销文件允许你在3个不同的时间执行那些希望自动执行的命令。这3个文件的名称在各个 shell 中各不相同:

shell登录文件环境文件注销文件
C-Shell.login.cshrc.logout
Tcsh.login.tcshrc、.cshrc.logout
Bourne Shell.profile
Korn Shell.profile$ENV
Bash(默认).bash_profile、.bash_login.bashrc.bash_logout
Bash(POSIX).profile$ENV.bash_logout

注意,这些初始化文件都采用一个以 .(点)字符开头的文件名称,这样的文件称为“点文件”。这个点具有特殊的含义。

POSIX 标准要求 shell 应该支持登录文件和环境文件,但是没有必要支持注销文件。登录文件的名称应该是 .profile。但是为了保持灵活性,环境文件的名称没有固定,而是采取在名为 ENV 的环境变量中存放环境文件的名称的方法。

但是 Bash 被设计为以两种不同模式运行:在默认模式中,Bash 支持 POSIX 标准的增强版;在 POSIX 模式中, Bash 严格遵循 1003.2 标准。

以 POSIX 模式运行 Bash 有两种方法:

  • 使用 --posix 选项启动 Bash,适用于所有系统;
  • 一些 Unix 系统被设置成 bash 命令和 sh 命令都可以启动 Bash(Linux 中通常就是这种情况),在这样的系统上,bash 命令以默认模式启动 shell,而 sh 命令以 POSIX 模式启动 shell。

点文件和 rc文件

以一个点号开头的文件成为点文件或者隐藏文件,这些文件希望被忽略,ls 命令不列举任何点文件,除非使用了 -a (all files,所有文件)选项。

环境文件的名称都以字符串 rc 结尾,这是 Unix程序命名初始化文件的一种常见约定。不只是 shell,很多程序都是使用以 rc 结尾的初始化文件。例如 vi 和 ex 编辑器使用 .exrc 的初始化文件;Unix 电子邮件程序 mail 使用 .mailrc 的初始化文件。

标识 rc 代表 run commands,运行命令,也就是特定程序每次启动时自动运行的命令。来源于CTSS兼容分时操作系统中的 runcom 功能。当自己写了一个程序为 foo 时,也应该使用 .foorc 作为这个程序的初始化文件。

Unix中的文本编辑器

在 KDE 中,基于 GUI 的文本编辑器是 kedit;

在 Gnome 中,基于 GUI 的文本编辑器是 gedit;

其他的基于文本终端的简单编辑器:Pico、Nano;(Nano 是 Pico 的现代替代品)

登录 shell 和 非登录 shell

当在 shell 提示出输入命令时,使用的是交互式 shell;当运行 shell 脚本时,使用的是非交互式 shell。而交互式 shell 有两种不同的类型。

登录时启动的shell 称为登录 shell;其他的交互式 shell 称为非登录 shell。这两种 shell 的初始化文件的处理方式大不相同。

在桌面环境中,获得 shell 的方式有两种:打开一个终端窗口或者切换到虚拟控制台。当使用<Ctrl-Alt-F1>组合键进入虚拟控制台时,要求进行登录,此时启动的是一个 登录shell。另一方面,如果只是简单地打开一个终端窗口,则启动一个 非登录shell。

在任何时候,通过输入 shell 的名称启动一个新的shell 时,因为没有进行登录,所以新 shell 时一个 非登录shell。

使用 ssh(Secure Shell,安全 shell)可以连接到远程 Unix 主机,一旦 ssh 连接上,就必须登录,此时启动的是 登录shell。

何时执行初始化文件

登录shell 执行登录文件和环境文件;

非登录shell 只执行环境文件;

例如:

Bash(默认模式)

  • 登录shell:.bash_profile
  • 非登录shell:.bashrc

Bash(POSIX 模式)

  • 登录shell:.profile,然后 $ENV
  • 非登录shell:$ENV

只有 Bash 的 登录shell 只执行登录文件,而不执行环境文件。对于其他所有的shell 来说,登录shell 既执行登录文件,也执行环境文件,并按照这个顺序执行。

初始化文件里的内容

登录文件有两项任务:设置环境以及初始化工作会话。因此,登录文件中应该包含下述命令:创建或者修改环境变量的命令(设置 PATH 等变量);执行所有一次性操作的命令。

环境文件有一项不同的任务:设置不能再环境中保存的自定义项,特别是 shell 选项、别名和函数。

初始化文件保存在 home 目录中。

shell 脚本注释

以 #(井号)字符开头的行,称为注释。当执行脚本时,shell 忽略所有的注释,即 # 之后的内容。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 19:18:26

silvaco学习记录(九)GaNdiode的瞬态正弦波信号仿真

最近在看微波注入信号的方面文章&#xff0c;发现常用的就是阶跃信号和正弦波信号&#xff0c;在atlas中阶跃信号可以很方便的直接加在电极上&#xff0c;但当我学习到正弦波信号的时候&#xff0c;耗费了很长时间&#xff0c;我起初在手册里看到了sin相关的语句&#xff0c;在…

作者头像 李华
网站建设 2026/5/5 11:38:22

基于大数据的电子产品销售数据分析系统源码设计与文档

前言在电子产品市场竞争加剧、销售数据呈爆炸式增长的背景下&#xff0c;传统销售分析存在 “数据维度割裂、实时性差、预测精度低、决策支撑弱” 的痛点&#xff0c;难以满足企业精准洞察市场、优化产销策略的需求。基于大数据的电子产品销售数据分析系统构建具有重要的商业与…

作者头像 李华
网站建设 2026/4/27 7:27:09

基于python的柳州市租房数据可视化分析源码设计与文档

前言在柳州租房市场信息碎片化、用户选房决策难、从业者缺乏数据支撑的背景下&#xff0c;基于 Python 的柳州市租房数据可视化分析系统&#xff0c;能精准挖掘租房市场规律&#xff0c;解决 “数据维度单一、趋势洞察难、区域差异不直观” 的痛点&#xff0c;兼具用户选房参考…

作者头像 李华
网站建设 2026/4/30 23:47:34

基于Python的旅游攻略分享平台系统网站源码设计与文档

前言在旅游攻略分享碎片化、信息真伪难辨、用户个性化需求未被满足的背景下&#xff0c;基于 Python 的旅游攻略分享平台系统&#xff0c;能解决 “内容管理混乱、推荐精准度低、互动性不足” 的痛点&#xff0c;兼具用户创作分享与个性化攻略获取的核心价值。从技术架构层面&a…

作者头像 李华
网站建设 2026/5/8 1:59:51

LobeChat能否编写Dockerfile?运维自动化助手

LobeChat 与 Docker&#xff1a;构建现代化 AI 运维自动化实践 在今天&#xff0c;AI 不再只是算法工程师手中的工具。越来越多的团队希望将大语言模型快速集成到业务流程中——无论是客服系统、内部知识库&#xff0c;还是个人助手应用。但问题也随之而来&#xff1a;如何让这…

作者头像 李华