当前位置: 首页 > article >正文

环境变量--永久 & 暂时

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
vim ~/.bashrc 

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

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

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

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

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

# 立即生效
source /etc/bashrc
  • 对所有用户生效
  • 永久有效
vi /etc/profile
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

http://www.kler.cn/news/283788.html

相关文章:

  • 设计模式 16 迭代器模式
  • OCI编程高级篇(十四) 直接路径装载设置字段信息
  • 数据结构与算法 第四天(串、数组、广义表)
  • HTTP分析
  • 高级java每日一道面试题-2024年8月30日-数据库篇-数据库的三范式是什么?
  • Java技术栈 —— Spark入门(三)之实时视频流
  • Dubbo如何传递链路追踪id?
  • 小琳AI课堂:使用ChatGPT API搭建系统(二)
  • innovus:如何让部分sink长到target insertion delay的长度
  • 关于OBI 在unity URP环境下使用的正确步骤
  • 网络编程(学习)2024.8.27
  • jQuery基础——选择器的补充方法——过滤方法、查找方法
  • python使用multiprocessing多进程通讯
  • 各种各样的正则表达式
  • 92. UE5 RPG 使用C++创建GE实现灼烧的负面效果
  • 达梦数据库-DM8 企业版安装指南
  • [java][代码] java中date格式化输出时间字符串
  • 《征服数据结构》LFU缓存
  • Vatee万腾平台:打造企业智能化转型的坚实后盾
  • 【Android】UIMode
  • fpga图像处理实战-双三次插值算法
  • Jmeter提取token并设置为全局变量
  • 聊聊STM32 MCU的BOOT0和BOOT1引脚
  • 浅谈Vue3和React18
  • 六个方面探讨企业为何迫切需要替换FTP
  • PyQt 迁移到 PySide
  • WPF ToolkitMVVM RelayCommand
  • 探究:Elasticsearch 文档的 _id 是 Lucene 的 docid 吗?
  • DNN学习平台(GoogleNet、SSD、FastRCNN、Yolov3)
  • C# 自动化抢购脚本:基于商品链接的实现方案