内容: 记录一下linux下的环境变量配置文件以及读取过程
概念:
环境变量(environment variables)是指:在操作系统中用来指定操作系统运行环境的一些参数
举例:
比如常用的PATH环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前
目录下面寻找此程序外,还会到PATH中指定的路径去找。你可以在终端使用printenv PATH查看当前PATH
变量的值。
类型:
系统环境变量:对所有系统用户都有效
用户环境变量:仅仅对当前的用户有效
几个常见配置文件:
/etc/profile : 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
/etc /environment : 系统的环境变量,系统应用程序的执行与用户环境可以是无关的,但与系统环境是
相关的
~/.profile : .profile文件是每个用户都可使用该文件输入专用于自己使用的shell信息的,当用户登录
时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行用户的.bashrc文件。
/etc/bashrc : 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bashrc : 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件
被读取。
配置文件分类:
1.用户环境变量可存储在以下文件中:
~/.profile
~/.bashrc, ~/.bash_profile, ~/.bash_login (当一个存在不会继续加载)
推荐将环境变量保存在~/.profile中,因为无论通过控制台或图形界面启动程序时,都会自动执行该文件.
而~/.bashrc, ~/.bash_profile, ~/.bash_login这些文件,通过shell启动程序时,它们也会加载;
但当通过图形界面环境启动程序时,这些文件中的环境变量设置便不可用了。
2.系统环境变量可存储在以下文件中:
/etc/environment
/etc/profile
/etc/profile.d(它是文件夹,/etc/profile.d文件夹来源于/etc/profile,在该目录下的*.sh,
即以sh为后缀的文件都会被加载。)
/etc/bash.bashrc
不推荐使用/etc/bash.bashrc,因为在图形界面环境下启动程序时,不会加载它里边的环境变量设置。
注意:配置文件修改后需要使用source来生效, 比如:source ~/.bashrc
不同权限环境变量配置:
一:使当前用户生效配置
修改目标:用户主目录下的.profile或.bashrc文件
方法:
1.登录到你的用户(非root),在终端输入:
2.sudo gedit ~/.profile(or .bashrc)
在此文件末尾加入环境变量的设置,比如:
export PATH=”$PATH:your path1:your path2 ...”
3.保存文件,注销再登录,变量生效。
二:使所有用户生效配置
修改目标:系统目录下的profile文件
方法:
1.sudo gedit /etc/profile
在此文件末尾加入环境变量的设置,比如:
export PATH=”$PATH:your path1:your path2 ...”
2.该文件编辑保存后,重启系统,变量生效。
三:全局环境变量配置
修改目标:系统目录下的 environment 文件
方法:
1.sudo gedit /etc/environment
2.以修改PATH为例子:
找到PATH="<......>",并修改该 PATH 变量,在其中加入自己的path即可,例如:
PATH="<......>:your path1:your path2 …"
各个path之间用冒号分割。该文件也是重启生效,影响所有用户。
注意这里不是添加export PATH=… 。
四:临时生效配置 (这种方式变量立即生效,但用户注销或系统重启后设置变成无效)
1.sudo export PATH="$PATH:your path1:your path2 …"
修改环境变量方法:
1.修改环境变量的值
直接覆盖原来的值修改 : EXAMPLE="New"
2.删除一个环境变量
unset $EXAMPLE
Linux启动时读取配置文件的过程:
1.读取/etc/enviroment
2.读取/etc/profile
-->/etc/bash.bashrc
--> /etc/profile
-->/etc/profile.d/ 下的所有.sh文件
3.读取~/.bash_profile,否则读取~/.bash_login,再否则~/.profile
(三者存在读取优先关系 依次读取,谁存在就执行谁,然后后面的就不会再执行)
4.~/.bashrc (如果运行bash才运行)
-->~/.bash_aliases
-->/etc/bash_completion
5.~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件。
常见环境变量:
BASH Bash : Shell的全路径
CDPATH :用于快速进入某个目录。
PATH :决定了shell将到哪些目录中寻找命令或程序
HOME :当前用户主目录
HISTSIZE :历史记录数
LOGNAME :当前用户的登录名
HOSTNAME :指主机的名称
SHELL :当前用户Shell类型
LANGUGE :语言相关的环境变量,多语言可以修改此环境变量
MAIL :当前用户的邮件存放目录
PS1 :基本提示符,对于root用户是#,对于普通用户是$