环境变量--永久 & 暂时

Linux 环境变量配置信息

查看环境变量

  • export 查看系统所有环境变量
  • echo $PATH 查看 PATH 环境变量值

环境变量的命名规则为:变量名=变量值 多个变量值之间使用 : 分隔

添加环境变量

环境变量分类

按照作用域分类

环境变量可以简单的分成用户自定义的环境变量以及系统级别的环境变量。

  • 用户级别环境变量定义文件:~/.bashrc~/.profile(部分系统为:~/.bash_profile
  • 系统级别环境变量定义文件:/etc/bashrc/etc/profile(部分系统为:/etc/bash_profile)、/etc/environment

另外在用户环境变量中,系统会首先读取~/.bash_profile(或者~/.profile)文件,如果没有该文件则读取~/.bash_login,根据这些文件中内容再去读取~/.bashrc

按照生命周期分类

inux环境变量可以分为两类:

  • 永久的 需要用户修改相关的配置文件,变量永久生效。
  • 临时的 用户利用export命令,在当前终端下声明环境变量,关闭Shell终端失效。

使用 export 添加临时环境变量

仿照上文提到的环境变量命名规则,使用命令
export PATH=/home/username/python/bin:$PATH

注意:

  1. 使用 export 变量值可以使用双引号也可以不使用
  2. 记得添加以前的 PATH 值,在前在后均可以
  3. 该声明是临时生效,在当前终端下声明环境变量,关闭Shell终端失效。

修改配置文件添加永久临时变量

vi ~/.bashrc
bash 复制代码
vim ~/.bashrc 

# 在最后一行加上 
export PATH=$PATH:/home/username/username/bin

# 立即生效
source ~/.bashrc
  • 对当前用户生效
  • 永久有效
vi ~/.bash_profile
bash 复制代码
vim ~/.bash_bashrc 

# 在最后一行加上 
export PATH=$PATH:/home/username/username/bin

# 立即生效
source ~/.bash_bashrc
  • 对当前用户生效
  • 永久有效
vi /etc/bashrc
bash 复制代码
vim /etc/bashrc 

# 在最后一行加上 
export PATH=$PATH:/home/username/username/bin

# 立即生效
source /etc/bashrc
  • 对所有用户生效
  • 永久有效
vi /etc/profile
bash 复制代码
vim /etc/profile 

# 在最后一行加上 
export PATH=$PATH:/home/username/username/bin

# 立即生效
source /etc/profile
  • 对所有用户生效
  • 永久有效

Linux 环境变量加载原理

.bashrc文件和.bash_profile文件的区别

  • ~/.bash_profile 是交互式、login 方式进入 bash 运行的
  • ~/.bashrc 是交互式 non-login 方式进入 bash

运行的通常二者设置大致相同,所以通常前者会调用后者。所以一般优先把变量设置在.bashrc里面。比如在crontab里面执行一个命令,.bashrc设置的环境变量会生效,而.bash_profile不会。

简单的说,.bash_profile只在会话开始时被读取一次,而.bashrc则每次打开新的终端时,都会被读取。

环境变量加载顺序

系统环境变量 --> 用户环境变量

Linux加载环境变量的顺序如下:

  1. /etc/environment
  2. /etc/profile
  3. /etc/bash.bashrc
  4. ~/.profile
  5. ~/.bashrc
相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5203 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩3 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言