linux中export的作用

本文通过实验对比了在Shell脚本中使用与未使用export声明变量的区别。解释了export如何使变量成为环境变量,并在子Shell中可见。同时强调了在配置文件如profile或bashrc中正确设置环境变量的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:http://www.cnblogs.com/zhangze/articles/1832542.html
以前一直觉得export可有可无,虽然知道export是干嘛的,不就是把本地变量变成全局变量么(实际中叫环境变量),但是感觉好像没有这货也没影响,今天看了这篇博文,终于恍然大悟。用自己的语言,思维方式重新整理一遍

首先说明两个概念:
父shell与子shell,从shellA中启动一个shell,称之为shellB。 shellA为父shell,shellB为子shell。
最容易理解的情况就是在一个shell中执行一个gnome-terminal命令(不同桌面环境命令不一样),弹出一个新的shell
最常见的情况是在当前shell下执行脚本,这个脚本实际上是在子shell中执行的

概念说完了,感觉啰嗦了, 说实验

这里用最常见的情况举例:在当前shell下执行脚本

现在有三个脚本
exp1.sh

var="hello,world"

exp2.sh

var="hello,world"
export var

test.sh

echo $var

实验1:

source exp1.sh
echo $var
bash test.sh

结果:
这里写图片描述

实验2:

source exp2.sh
echo $var
bash test.sh

结果:
这里写图片描述
可以看到在当前shell下执行echo $var是没有任何问题的,但是执行bash test.sh时,实验1是没有任何输出(找不到var这个变量)实验2 echo出了var的值。因为实验2中exp2.sh加入了export,所以var变成了环境变量,所以var对子shell是可见的,而实验1中由于没有export var,所以var是个局部变量,并不能被子shell看到

再啰嗦几句, linux中在 profile 或者 bashrc 或者其他类似的文件中设置环境变量时(比如PATH),如果没有export,那么只能在直接启动的shell中起作用,如果在当前shell下运行脚本或者直接启动一个子shell,因为实际上是局部变量。子shell看不见的,所以就gg了

### 如何在Linux中使用`export`命令 #### `export`命令概述 `export`是Bash shell的一个内置命令,用于标记变量和函数以便将其传递给子进程。这意味着被导出的变量将在子进程中可用,但不影响其他环境[^1]。 #### 使用示例 当想要设置一个新的环境变量并使其对后续启动的所有新shell有效时,可以像下面这样使用`export`: ```bash export MY_VARIABLE="my_value" ``` 这会创建名为`MY_VARIABLE`的新环境变量,并赋予其值`"my_value"`。此操作仅对该shell及其所有子进程生效,在当前shell关闭之后该变量将会消失除非将上述命令加入到配置文件如`.bashrc`或`.profile`中去永久化保存它[^2]。 对于路径类型的特殊环境变量比如`PATH`来说,则可以通过如下方式来扩展已有的路径列表而不覆盖原有内容: ```bash export PATH="/new/path/to/add:$PATH" ``` 这里通过冒号分隔符把新的目录加到了现有`PATH`之前,从而使得新增位置下的可执行文件可以在命令行直接调用而无需指定全限定名。 #### 验证变量是否成功设定 为了确认刚刚定义好的环境变量确实已经被正确设置了,可以用`echo`加上对应的变量名称前缀美元符号的形式打印出来查看具体取值情况: ```bash echo $MY_VARIABLE ``` 如果前面已经按照上面的方法设定了`MY_VARIABLE`为`"my_value"`的话,那么此时应该能看到终端返回字符串`my_value`作为输出结果[^4]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值