Linux环境
每当我们打开一个Shell会话,Shell就会从各种配置文件里加载相应的变量,这些变量共同组成了环境。变量有两种类型——环境变量与Shell变量,但是在bash下两者没啥区别。
同时Shell还会存储包含别名与Shell函数在内的程序性数据。
检查环境
诸如bash、zsh内置了printenv与set命令来查看当前Shell会话内存储的环境,两者的区别是前者只会显示环境变量,后者会显示环境变量、Shell变量与Shell函数等。
printenv可以指定环境变量名来查看特定的环境变量值,比如USER。
这种查看单个环境变量值的方式也可以借助echo实现,通过扩展的方式引用环境变量。
set命令在不指定选项的情况下会输出当前环境的所有信息,并且以字母序排序。
set与printenv都不能显示别名,它需要通过alias查看。
在其中有一个很重要的环境变量值为PATH,它是由冒号分割的,以一系列路径组成的环境变量,记录了在运行命令时候Shell需要查找的目录。
环境是如何炼成的
环境是Shell会话被创建的同时并行建立的,当用户启用一个会话时,对应的Shell就会按照特定顺序读取并加载一系列启动配置文件,通常是先读取所有用户共享的默认环境,后读取主目录下用户的个人配置文件。
login shell & non-login shell
Shell会话有两个类型,一个是提示登录的会话(通常包括你的SSH远程登录会话),一个是无需登录的会话,比如在本地Linux计算机的GUI界面里打开一个终端。
以bash举例,下表展示了login shell与non-login shell加载文件的顺序。
表1-1 login shell的启动文件
表1-2 non-login shell的启动文件
non-login shell不仅会读取以上列出的文件,还会继承父类进程的环境,通常是一个login shell。
实际上在日常的使用中,~/.bashrc是最重要的启动文件,因为non-login shell总是要加载它,而login shell也会读取这个文件。
修改环境
通过修改上面所提到的相应配置文件,即可实现环境上的自定义,我们可以通过nano或者vim来编辑文件。
在编辑文件前最好做一个配置文件的备份。
我们仅以最常用的,修改PATH作为示例。
这里同样利用了Linux扩展的特性,将我们的新PATH添加至PATH环境变量之前,这是一个很实用的添加PATH的技巧。
使用export可以暂时地将这个修改保存在当前的Shell会话下。
如果要持久化配置,需要将其写入启动配置文件,比如~/.bashrc,我们可以直接将其加在文件末尾。
最后,我们需要“刷新”一下配置,才能激活我们修改的内容。
注释
配置文件支持以"#"开头进行注释,适当地对自己的修改进行注释有助于之后维护配置文件。
不然写完后没几天就忘了这段代码干啥用的(