Unix Environment Variables(环境变量)
首先来了解下,当电脑启动时,发生了什么?
下图是系统的基础架构图
当用户登录系统之后,shell 会经历一个初始化的阶段,用来设置环境,通常是执行以下两个目录
-
/etc/profile
-
profile
- The shell checks to see whether the file /etc/profile exists.If it exists, the shell reads it. Otherwise, this file is skipped. No error message is displayed.
- The shell checks to see whether the file .profile exists in your home directory. Your home directory is the directory that you start out in after you log in.If it exists, the shell reads it; otherwise, the shell skips it. No error message is displayed.
/etc/profile
在Unix系统中,
/etc/profile
是一个全局的启动脚本,用于为所有用户设置系统范围的环境变量和启动程序。具体来说,它做了以下几件事情:
环境变量设置:它通常会定义一些环境变量,比如
PATH
、EDITOR
、LANG
等,这些变量对所有用户都会生效。启动程序:可以在
/etc/profile
中添加要在每次用户登录时自动执行的命令或程序,例如启动特定的应用程序或脚本。配置用户会话:它设置的环境变量和配置会影响所有用户的会话和登录过程。
执行其他脚本:有时
/etc/profile
会调用其他脚本,比如/etc/profile.d/
目录中的脚本,以便分离和组织配置。条件判断:根据系统的配置或条件,可以在
/etc/profile
中添加特定的逻辑,以满足不同的需求或环境条件。这个文件在用户登录时被读取和执行,但具体的操作和设置可能会因Unix的不同版本和配置而有所不同。
/Home/profile
在用户目录下的
.profile
脚本是用户级的启动脚本,它在用户登录时被执行。这个脚本的作用包括:
设置用户级环境变量:用户可以在
.profile
中定义环境变量,如PATH
、EDITOR
等,这些变量只对该用户有效。配置用户环境:可以设置其他环境配置,如命令别名、函数等,来定制用户的工作环境。
启动程序:可以在
.profile
中指定登录时要自动执行的程序或脚本,比如启动个人化的应用程序或自定义的初始化脚本。执行其他脚本:用户可以在
.profile
中调用其他脚本,以组织和分离配置内容。例如,可以用source
命令引入其他文件。条件配置:可以在
.profile
中根据系统环境或条件进行配置,以适应不同的工作环境。与
/etc/profile
不同,.profile
是特定于每个用户的,允许每个用户根据个人需求定制其环境配置。注意,.profile
文件主要用于登录 shell,若使用其他类型的 shell(如zsh
),可能会使用不同的配置文件,如.zshrc
。
环境变量之 PATH
环境变量
PATH
是一个非常重要的环境变量,它在Unix/Linux系统中用于指定可执行文件的搜索路径。具体来说,PATH
变量告诉操作系统在什么路径下查找命令和程序。以下是PATH
环境变量的详细介绍:1. 基本概念
作用:当你在终端中输入一个命令(例如
ls
或python
)时,系统会按照PATH
变量中定义的路径顺序去查找这个命令对应的可执行文件。如果找到了,就执行这个文件;如果找不到,就会显示一个错误信息(通常是 “command not found”)。格式:
PATH
变量是由多个目录路径组成的,每个路径之间用冒号:
分隔。例如:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
。2. 设置
PATH
查看当前
PATH
:在终端中运行echo $PATH
可以查看当前的PATH
设置。修改
PATH
:你可以通过编辑~/.bashrc
、~/.zshrc
或其他 shell 配置文件来添加或修改PATH
。例如:
1
export PATH=$PATH:/home/username/bin
这会将
/home/username/bin
目录添加到现有的PATH
中。你可以将这行代码添加到配置文件中,并使用source ~/.bashrc
使更改生效。3. 优先级
- 顺序重要:
PATH
变量中的目录顺序很重要。系统会按照PATH
中的顺序查找可执行文件,因此如果有多个目录中包含同名的命令,系统会执行第一个找到的命令。4. 应用场景
用户自定义命令:你可以将自己编写的脚本或程序所在的目录添加到
PATH
中,从而可以在任何位置直接运行这些脚本或程序,而不需要输入完整路径。软件安装:许多软件在安装时会自动将它们的可执行文件路径添加到
PATH
中,以方便用户直接调用。5. 例子
查看
PATH
:
1
echo $PATH
临时修改
PATH
:
1
export PATH=/home/username/myprograms:$PATH
这会将
/home/username/myprograms
目录添加到PATH
的前面,优先查找这个目录中的程序。
export
是一个用于在 Unix 和 Linux 系统中的 shell 环境中设置和管理环境变量的命令永久修改
PATH
:
将上述export PATH=...
语句添加到~/.bashrc
或~/.zshrc
文件中,并执行source ~/.bashrc
或source ~/.zshrc
使其生效。