环境变量定义
用户自定义变量只在当前的shell中生效,而环境变量会在当前shell和这个shell的所有子shell当中生效
如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的shell中生效
设置环境变量
export 变量名=变量值 #申明变量
env #查询变量
unset 变量名 #删除变量
系统常见环境变量
PATH:系统查找命令的路径
echo $PATH
/Library/Frameworks/Python.framework/Versions/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
PATH变量叠加
PATH=“$PATH”:/root/sh
环境变量配置文件
使用export定义的环境变量,只能在你当前shell或子shell中使用,如果注销或重启系统,环境变量就会销毁,将环境变量写入相应的配置文件就会永久生效
source命令
修改环境变量配置文件后需要退出然后再登陆,配置文件才能生效
可以直接使用source命令,让配置文件直接生效
source 配置文件
. 配置文件
.是source的缩写
环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH,HISTSIZE,PS1,HOSTNAME等默认环境变量
配置文件主要有:
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc
其中etc下的几个文件,针对所有用户生效,家目录下只对当前用户生效
设置环境变量
这几个配置文件的执行顺序可能如下
具体执行哪个文件可以根据etc/profile的代码查看,后面的文件如果定义了相同的环境变量,会被覆盖
设置系统环境变量
系统环境变量对所有用户生效
(1)在/etc/profile中设置
用户登陆时会执行etc/profile中的代码,但是Linux不推荐在etc/profile中设置环境变量
在profile中使用export设置环境变量,再使用source执行后,使用env命令可以看到该变量
(2)在etc/profile.d文件夹下增加环境变量脚本文件,这是Linux 推荐的方法
在该文件夹下增加一个.sh文件,定义自己的环境变量
ubuntu@VM-4-17-ubuntu:/etc$ cd profile.d/
ubuntu@VM-4-17-ubuntu:/etc/profile.d$ ls
01-locale-fix.sh bash_completion.sh cedilla-portuguese.sh gawk.csh gawk.sh ljs.sh Z97-byobu.sh
ubuntu@VM-4-17-ubuntu:/etc/profile.d$ cat ljs.sh
export ljs="ljs"
(3) 在etc/bashrc中设置环境变量
Linux也不推荐这种方法设置环境变量
用户环境变量
用户环境变量只针对当前用户生效
(1).bash_profile(推荐首选),有的系统也可能是.profile这个文件
当用户登陆时执行,每个用户都可以使用该文件来配置属于自己的环境变量
(2).bashrc
当用户登陆时以及每次打开shell时该文件都会被执行,不推荐在这里面配置环境变量
(3).bash_logout
当每次退出系统时(退出bash shell)时执行该文件
练习
-
在/etc/profile中设置一个环境变量myenv:export myenv=myenv
-
让环境变量生效
source /etc/profile -
在其他文件中引用这个环境变量
echo myenv=$myenv