1. 查看环境变量
-
我们都知道,系统去找命令时是按环境变量从前到后检测的,那么这些变量都是哪来的,从哪儿能看到呢?
-
查看当前环境变量,终端输入:
# 查看当前环境变量 [jade@localhost ~]$$PATH # 输出为 bash:/home/jade/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jade/software/nodejs/bin::/opt/s21/python367/bin:/home/jade/software/nodejs/bin::/home/jade/bin:/home/jade/.local/bin:: 没有那个文件或目录
2. 和环境变量有关的文件:
系统级别(修改后对本机上的所有用户生效)
- /etc/profile —— 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置;
- /etc/environment —— 在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量;
- /etc/bashrc —— 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取;
用户级别(修改后只对当前用户生效)
- /home/jade/.profile —— 用户jade的shell信息,当用户登录时,该文件仅仅执行一次,默认情况下,它设置一些环境变量,执行用户的.bashrc文件;(注:jade为当然登录的用户,每个用户都有自己的家目录,即在/home文件夹下。)
- /home/jade/.bashrc —— 用户jade的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取;
3. 对当前环境变量进行分析:
-
分别查看这几个文件的内容
# 查看文件 cat /etc/profile # 输出(这里只列出和环境变量有关的命令) export PATH="$PATH:/opt/s21/python367/bin:/home/jade/software/nodejs/bin:" # 查看文件 cat /etc/environment # 输出(这里只列出和环境变量有关的命令) PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jade/software/nodejs/bin:" # 查看文件 cat /etc/bashrc # 输出(这条和环境变量无关,只是一条快捷命令,可忽略) alias pycharm='sh /home/jade/pycharm-2019.1.2/bin/pycharm.sh' # 查看文件 cat /home/jade/.profile # 输出(这里只列出和环境变量有关的命令) PATH="$PATH:$HOME/bin:$HOME/.local/bin:" # 查看文件 cat /home/jade/.bashrc # 输出(这里只列出和环境变量有关的命令) export PATH="/home/jade/anaconda3/bin:$PATH"
-
由以上,可以分析出环境变量的组成:
/home/jade/anaconda3/bin: ----->来自于 /home/jade/.bashrc /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/jade/software/nodejs/bin: ----->来自于 /etc/environment :/opt/s21/python367/bin:/home/jade/software/nodejs/bin: ----->来自于 /etc/profile: :/home/jade/bin:/home/jade/.local/bin:: 没有那个文件或目录 ----->来自于 /home/jade/.profile
-
那么,加载先后顺序或者叠加规则已经出来了:
先加载/etc/environment-----> /etc/profile -----> /home/jade/.profile -----> /home/jade/.bashrc 至于/etc/bashrc是在哪个位置,由于对我没有影响(因为里面没有涉及到环境变量),这里不做定论.不过根据用户级的文件读取顺序,可以猜测是在/etc/profile之后,读者们可以自行实验