linux export的作用域

   日期:2020-11-06     浏览:147    评论:0    
核心提示:liunx export的作用域最近好友提问export作用域相关的问题~被问到了,写篇文章记录一下。文章目录liunx export的作用域前言一、问题详情二、分析原因1.百度定义2.如何实现3.linux的相关目录介绍总结前言Linux export 命令用于设置或显示环境变量。提示:以下是本篇文章正文内容,下面案例可供参考一、问题详情现在是可以echo的现在写一个脚本测试wq 保存为 test.sh直接运行脚本是ok的可以输出~~~现在我再直接echo $a不

linux export的作用域

最近好友提问export作用域相关的问题~被问到了,写篇文章记录一下。

文章目录

  • linux export的作用域
  • 前言
  • 一、问题详情
  • 二、分析原因
    • 1.百度定义
    • 2.如何实现
    • 3.linux的相关目录介绍
  • 总结

前言

Linux export 命令用于设置或显示环境变量。

提示:以下是本篇文章正文内容,下面案例可供参考

一、问题详情


现在是可以echo的
现在写一个脚本测试

wq 保存为 test.sh

直接运行脚本是ok的可以输出~~~
现在我再直接echo $a

不行是空的
那么怎么可以让他在外面也可以生效呢?

二、分析原因

1.百度定义

搜索到,在 shell 中执行程序时,shell 会提供一组环境变量。export 可新增,修改或删除环境变量,供后续执行的程序使用。export 的效力仅限于该次登陆操作。
我们执行脚本,其实是一个新的进程在执行,他设置的环境变量,并不能影响当前进程,也就是变量的作用域不一样。

2.如何实现

知道问题了,我们就很好解决了。

当运行一个.sh文件或者是shell命令,shell会把当前的环境变量都复制过来,也就是子类和父类的关系。通过以下几个场景解释这个概念。

证明父能影响子

直接运行命令export K=V,然后echo $K,能看到输出了V
写一个shell脚本,echo $K,能看到输出了V
证明子不能影响父

在一个shell脚本中export K=V,然后echo $K,能看到输出了V。
基于1,直接运行命令echo $K,发现输出为空

我们可以
source test.sh
原理就是source 命令 可以重新加载.bash_profile 和 .profile目录的命令。
我们使用source 是在本进程执行的,所以 $a的作用域是相符的,我们就可以echo出 $a。

3.linux的相关目录介绍

系统级:

1、/etc/profile
在系统启动后第一个用户登录时运行,并从/etc/profile.d目录的配置文件中搜集shell的设置,使用该文件配置的环境变量将应用于登录到系统的每一个用户。

2、/etc/bashrc(Ubuntu和Debian中是/etc/bash.bashrc)
在 bash shell 打开时运行,修改该文件配置的环境变量将会影响所有用户使用的bash shell。

3、/etc/environment
在系统启动时运行,用于配置与系统运行相关但与用户无关的环境变量,修改该文件配置的环境变量将影响全局。

用户级:

1、~/.profile(推荐首选)
当用户登录时执行,每个用户都可以使用该文件来配置专属于自己使用的shell信息。

2、~/.bashrc
当用户登录时以及每次打开新的shell时该文件都将被读取,不推荐在这里配置用户专用的环境变量,因为每开一个shell,该文件
都会被读取一次,效率肯定受影响。

4、~/.bash_logout
当每次退出系统(退出bash shell)时执行该文件。

总结

麻烦来个一键三连!!!!!

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服