export
为shell变量或函数设置导出属性。
概要
主要用途
定义一到多个变量并设置导出属性。
修改一到多个变量的值并设置导出属性。
删除一到多个变量的导出属性。
显示全部拥有导出属性的变量。
为一到多个已定义函数新增导出属性。
删除一到多个函数的导出属性。
显示全部拥有导出属性的函数。
选项
参数
name(可选):变量名或已定义函数名。
value(可选):变量的值。
返回值
export返回true除非你提供了非法选项或非法名称。
例子
错误用法
对未定义的函数添加导出属性。
对没有导出属性的函数/变量执行删除导出属性操作。
在
--
后使用选项。
Q&A
Q:对变量或函数设置导出属性有什么用?
A:它们会成为环境变量,可以在脚本中访问它们,尤其是脚本中调用的子进程需要时。( 参考链接4 )
Q:如果我编写的脚本修改了已有的环境变量的值,那么执行它会在当前终端生效吗?会影响之前以及之后打开的终端吗?
A:只有通过source
方式调用的脚本会生效,您可以查看source
命令获得更多信息;其他方式只是在子shell中执行。 之前的不会影响,之后的除非是修改了~/.bashrc
这种启动终端时加载的脚本。( 参考链接1 )
Q:我脚本文件中调用~/.bashrc
中定义的函数和变量。为什么在新打开的终端中通过 sh
方式调用该脚本或直接运行
~/.bashrc
中定义的函数和变量。为什么在新打开的终端中通过 sh
方式调用该脚本或直接运行这个当前用户有执行权限的脚本却不能使用这些函数和变量?
A:请在~/.bashrc
文件中增加export它们的语句。另请参阅 知识点 段落。
Q:数组和关联数组也可以设置导出属性吗?
A:是可以的(如果你的bash支持它们),不过有些问题( 参考链接2 )。
Q:为什么我在查看变量或函数导出属性的时候显示的开头是declare
?
declare
?A:因为declare
也能够设置变量或函数的导出属性,详见declare
命令。
注意
该命令是bash内建命令,相关的帮助信息请查看
help
命令。
知识点
在info bash
或 bash在线文档 的 3.7.3
节提到了shell执行环境,其中涉及变量和函数的内容如下
shell parameters that are set by variable assignment or with set or inherited from the shell’s parent in the environment
shell functions defined during execution or inherited from the shell’s parent in the environment
那么第一句话中的参数又和变量有什么关系呢?在3.4
节第一段中提到:
A variable is a parameter denoted by a name.
变量是有名字的参数。
那么子shell确实继承了父shell中带有导出属性的变量或函数。
可参考链接: 执行脚本方式的区别
参考链接
扩展阅读
一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。查看已经存在的环境变量:
Last updated