export 命令

本文介绍了在Linux系统中如何利用shell脚本定义变量,并通过export命令将这些变量变为全局变量,使得子shell能够访问这些变量。

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

shell与export命令(将一个shell局部变量变成一个shell全局变量)
用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行
shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一
个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来
说,用户可以有许多 shell,每个shell都是由某个shell(称为父shell)派生的。
在子
shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内
的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。
export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。
[例]在本例中,变量myfile是在dispfile脚本程序中定义的。然后用export命令将变量myfile输出至任何子shell,例如当执行printfile脚本程序时产生的子shell。
dispfile脚本程序清单:
/**************begin dispfile**************/
myfile=”List”
export myfile
echo “Displaying $myfile”
pr –t –n $myfile
printfile
/**************end dispfile***************/
 
printfile脚本程序清单:
/**************begin printfile**************/
echo “Printing $myfile”
lpr $myfile&
/**************end printfile**************/
$dispfile
Displaying List
1 screen
2 modem
3 paper
Printing List
$
Linux 指令:系统设置--export 功能说明:设置或显示环境变量。
语  法:export [-fnp][变量名称]=[变量设置值]
补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。
参  数:
 -f  代表[变量名称]中为函数名称。
 -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
 -p  列出所有的shell赋予程序的环境变量。
<think>好的,我现在需要帮助用户了解export命令的功能和用法。首先,我要回顾用户提供的引用内容,确保信息准确。根据引用[1],export用于创建环境变量或将普通变量导出为环境变量,同时可以赋值。引用[5]提到环境变量会传递给子进程,而局部变量不会,这解释了export的重要性。用户可能想知道如何在shell中使用export,比如临时导出变量,比如PATH的修改,如引用[4]中的例子。 接下来,用户可能对export在不同环境下的差异感兴趣,比如在shell脚本和Makefile中的不同,如引用[2]所述。需要区分两者的作用范围和使用场景。此外,用户可能想知道如何查看所有变量,包括导出的环境变量,引用[3]提到使用命令显示所有变量,这可能涉及env或set命令。 我需要组织这些信息,分点说明功能、使用方法、注意事项,以及相关问题。确保使用正确的中文表达,并遵循LaTeX格式要求,比如行内公式用$...$,独立公式用$$...$$。同时,生成的相关问题要自然,帮助用户深入理解,比如作用域差异、临时变量设置、查看方法等。最后检查引用标识是否正确添加在每个引用段落的末尾,确保用户能清楚看到来源。</think>### export命令的功能和用法解析 #### 一、核心功能 1. **创建/导出环境变量** 通过`export`可将普通变量(局部变量)提升为环境变量,使其对当前Shell及其子进程可见。例如: ```bash MY_VAR="test" # 定义普通变量(仅当前Shell可见) export MY_VAR # 导出为环境变量(子进程可继承) ``` 2. **直接赋值并导出** 可一步完成变量赋值与导出,例如: ```bash export PATH="$PATH:/opt/new_path" # 扩展PATH变量并导出[^4] ``` 3. **作用范围控制** - **Shell脚本**:导出的变量仅对当前会话及其子进程有效(重启后失效)[^1][^5] - **Makefile**:通过`export`传递变量给子`make`进程,确保编译环境一致性[^2] #### 二、使用方法 1. **基本语法** ```bash export 变量名=值 # 直接定义并导出 export 变量名 # 将已存在的变量导出 ``` 2. **临时与永久生效** - **临时生效**:在命令行直接执行`export`(退出Shell后失效) - **永久生效**:将命令写入`~/.bashrc`或`/etc/profile`后执行`source`加载 3. **查看已导出变量** - 显示所有环境变量:`env` 或 `printenv` - 显示所有变量(含局部变量):`set`[^3] #### 三、关键注意事项 1. **变量覆盖规则** 子进程继承父进程环境变量,但子进程修改变量不会反向影响父进程 2. **路径拼接示例** ```bash export PATH="/usr/local/bin:$PATH" # 将新路径添加到原有PATH前 ``` 3. **特殊场景差异** | 场景 | 作用范围 | 典型用途 | |-------------|---------------------------|-------------------------| | Shell脚本 | 当前会话及子进程 | 脚本间共享配置 | | Makefile | 子`make`进程及编译工具链 | 传递编译参数(如CFLAGS) | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值