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

Linux:导出环境变量命令export

相关阅读

Linuxicon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12234591.html?spm=1001.2014.3001.5482


        Linux中的内建命令export命令用于创建一个环境变量,或将一个普通变量导出为环境变量,并且在这个过程中,可以给该环境变量赋值。

        下面是该命令的语法。

用法:
export [-pfn] [name[=word]]
选项:
-p 指定该选项会打印出当前进程的所有环境变量(被导出的变量)及其值
-f 指定导出一个函数名
-n 取消一个环境变量(被导出的变量)或导出函数的导出属性

        环境变量(被导出的变量)指的是一类特殊的变量,当一个进程开辟了其他进程后,它们会被子进程继承,系统默认的环境变量一般使用大写变量名,后面我们统称环境变量。例如$SHELL这个环境变量就存储了用户默认登录的Shell路径,可以使用echo命令查看一个环境变量的值。

[***@EDA ~]$ echo $SHELL
/bin/bash

        使用export命令而不添加name参数会导致和使用-p选项一样的结果,即打印出当前进程的所有环境变量及其值。

[***@EDA ~]$ export
declare -x SHELL="/bin/bash"
declare -x WINDOWPATH="1"
declare -x KDEDIRS="/usr"
declare -x LANG="en_US.UTF-8"
declare -x PrimeTime_HOME="/opt/Synopsys/PrimeTime2018/pts/O-2018.06-SP1"
declare -x Synopsys_Dir="/opt/Synopsys"
*****[***@EDA ~]$ export -p
declare -x SHELL="/bin/bash"
declare -x WINDOWPATH="1"
declare -x KDEDIRS="/usr"
declare -x LANG="en_US.UTF-8"
declare -x PrimeTime_HOME="/opt/Synopsys/PrimeTime2018/pts/O-2018.06-SP1"
declare -x Synopsys_Dir="/opt/Synopsys"
*****

        一个进程中定义的普通的变量是无法被其子进程访问到的。

[***@EDA ~]$ aaa=1        #在当前进程创建一个变量
[***@EDA ~]$ bash         #在当前进程运行另一个bash子进程
[***@EDA ~]$ echo $aaa    #此时尝试访问$aaa失败
(nothing output)

        一个进程中的环境变量可以被子进程继承。

[***@EDA ~]$ bbb=1       #在当前进程创建一个变量
[***@EDA ~]$ export bbb  #导出该变量(使其成为环境变量)
[***@EDA ~]$ bash        #在当前进程运行另一个bash子进程
[***@EDA ~]$ echo $bbb   #此时尝试访问$bbb成功
1

        为什么我们不使用系统默认环境变量举例呢?这是因为即使我们改变了系统默认环境变量的值, 在新建bash子进程时,虽然其继承了父进程的环境变量,但其会自动读取配置文件初始化环境变量,从而覆盖之前改变的值。

[***@EDA ~]$ SHELL=1      #改变系统默认环境变量
[***@EDA ~]$ echo $SHELL  #在当前进程中,环境变量的值被改变
1
[***@EDA ~]$ export       #在当前进程中,环境变量的值被改变
*****
declare -x SHELL="1"
*****
[***@EDA ~]$ bash         #在当前进程运行另一个bash子进程
[***@EDA ~]$ echo $SHELL  #环境变量的值虽然被继承,但紧接着初始化了
/bin/bash

        使用-n选项可以取消一个环境变量的导出属性,即将一个环境变量变成普通变量。

[***@EDA ~]$ ccc=1       #在当前进程创建一个变量
[***@EDA ~]$ export ccc  #导出该变量(使其成为环境变量)
[***@EDA ~]$ bash        #在当前进程运行另一个bash子进程
[***@EDA ~]$ echo $ccc   #此时尝试访问$ccc成功
1
[***@EDA ~]$ exit           #退出bash子进程
[***@EDA ~]$ export -n ccc  #取消变量导出(使其成为普通变量)
[***@EDA ~]$ echo $ccc      #当前进程仍可以访问
[***@EDA ~]$ bash           #在当前进程运行另一个bash子进程
[***@EDA ~]$ echo $ccc      #此时尝试访问$ccc失败
(nothing output)

         使用-f选项可以导出一个函数,使该函数能在子进程中调用。

[***@EDA ~]$ my_function() {           #在当前进程创建一个函数
>     echo "This is my function."  
> }
[***@EDA ~]$ export -f my_function     #导出该函数
[***@EDA ~]$ bash
[***@EDA ~]$ my_function 
This is my function.

        由于.bashrc配置文件的内容会在bash启动后被读取并执行,所以如果要添加一个默认的环境变量,需要在配置文件中使用export命令,如下图所示。

 

 

相关文章:

  • Android7.1 ANR error 弹窗处理
  • 全局Ceph节点宕机处理
  • PDFPlumber解析PDF文本报错:AssertionError: (‘Unhandled’, 6)
  • SpringBoot基础入门
  • fastgpt本地详细部署以及配置
  • Spring boot 集成netty实现websocket通信
  • Android 二维码相关(一)
  • 微信小程序修改placeholder样式
  • Java必须掌握的B树知识点(含面试大厂题含源码)
  • PyTorch搭建LeNet训练集详细实现
  • C语言:内存函数
  • 向ChatGPT高效提问模板
  • DAY by DAY 史上最全的Linux常用命令汇总----命令格式
  • 微信小程序返回上一页刷新组件数据
  • NVMFS5A160PLZT1G汽车级功率MOSFET P沟道60 V 15A 满足AEC-Q101标准
  • 【5+】跨webview多页面 触发事件(二)
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • JavaScript的使用你知道几种?(上)
  • js 实现textarea输入字数提示
  • js中的正则表达式入门
  • maven工程打包jar以及java jar命令的classpath使用
  • Python 反序列化安全问题(二)
  • Python语法速览与机器学习开发环境搭建
  • SOFAMosn配置模型
  • webpack入门学习手记(二)
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 每天一个设计模式之命令模式
  • 前端攻城师
  • 算法-图和图算法
  • 用Canvas画一棵二叉树
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #vue3 实现前端下载excel文件模板功能
  • #Z2294. 打印树的直径
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • $ git push -u origin master 推送到远程库出错
  • (1)Android开发优化---------UI优化
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (vue)页面文件上传获取:action地址
  • (九十四)函数和二维数组
  • (算法)N皇后问题
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)VC++中ondraw在什么时候调用的
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .Net IOC框架入门之一 Unity
  • .Net Winform开发笔记(一)