当前位置:   article > 正文

Linux:导出环境变量命令export

Linux:导出环境变量命令export

相关阅读

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


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

        下面是该命令的语法。

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

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

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

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

  1. [***@EDA ~]$ export
  2. declare -x SHELL="/bin/bash"
  3. declare -x WINDOWPATH="1"
  4. declare -x KDEDIRS="/usr"
  5. declare -x LANG="en_US.UTF-8"
  6. declare -x PrimeTime_HOME="/opt/Synopsys/PrimeTime2018/pts/O-2018.06-SP1"
  7. declare -x Synopsys_Dir="/opt/Synopsys"
  8. *****
  9. [***@EDA ~]$ export -p
  10. declare -x SHELL="/bin/bash"
  11. declare -x WINDOWPATH="1"
  12. declare -x KDEDIRS="/usr"
  13. declare -x LANG="en_US.UTF-8"
  14. declare -x PrimeTime_HOME="/opt/Synopsys/PrimeTime2018/pts/O-2018.06-SP1"
  15. declare -x Synopsys_Dir="/opt/Synopsys"
  16. *****

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

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

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

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

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

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

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

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

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

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

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

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/233753?site
推荐阅读
相关标签
  

闽ICP备14008679号