linux命名空间的作用域,linux export的作用域

linux export的作用域

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

文章目录

linux export的作用域

前言

一、问题详情

二、分析原因

1.百度定义

2.如何实现

3.linux的相关目录介绍

总结

前言

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

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

一、问题详情

82f8ef2c401bd534ed760011fbdd6c23.png

现在是可以echo的

现在写一个脚本测试

1469cec61fc7cf070d26d842eb11bc83.png

wq 保存为 test.sh

dcabdeebd221c85acf7241d456147a25.png

直接运行脚本是ok的可以输出~~~

现在我再直接echo $a

9b4e6cea3be32f0bb28a03c4bdbbd4c7.png

不行是空的

那么怎么可以让他在外面也可以生效呢?

二、分析原因

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

12edbf359bae5d346fc829285c1b2d68.png

原理就是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)时执行该文件。

总结

day day up~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值