本文小编为大家详细介绍“Linux export命令怎么正确使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux export命令怎么正确使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
export
为shell变量或函数设置导出属性。
概要
export [-fn] [name[=word]]... export -p
主要用途
定义一到多个变量并设置导出属性。
修改一到多个变量的值并设置导出属性。
删除一到多个变量的导出属性。
显示全部拥有导出属性的变量。
为一到多个已定义函数新增导出属性。
删除一到多个函数的导出属性。
显示全部拥有导出属性的函数。
选项
-f:指向函数。 -n:删除变量的导出属性。 -p:显示全部拥有导出属性的变量。 -pf:显示全部拥有导出属性的函数。 -nf:删除函数的导出属性。 --:在它之后的选项无效。
参数
name(可选):变量名或已定义函数名。
value(可选):变量的值。
返回值
export返回true除非你提供了非法选项或非法名称。
例子
# 显示全部拥有导出属性的变量。 # export -p # export # 显示全部拥有导出属性的函数。 # export -pf
# 首先删除要演示的变量名 #unset a b # 定义变量的同时增加导出属性 export a b=3 # 当然也可以先定义后增加导出属性 b=3 export b # 修改拥有导出属性的变量的值 export a=5 b=7 # 当然也可以直接赋值修改 a=5;b=7 # 删除变量的导出属性 export -n a b
# 首先删除要演示的函数名 unset func_1 func_2 # 创建函数 function func_1(){ echo '123'; } function func_2(){ echo '890'; } # 为已定义函数增加导出属性 export -f func_1 func_2 # 删除函数的导出属性 export -fn a b
# 添加环境变量(JAVA)到`~/.bashrc` PATH=/usr/local/jdk1.7.0/bin:$PATH # 添加当前位置到动态库环境变量 export LD_LIBRARY_PATH=$(pwd):${LD_LIBRARY_PATH}
错误用法
对未定义的函数添加导出属性。
对没有导出属性的函数/变量执行删除导出属性操作。
在 -- 后使用选项。
Q&A
Q:对变量或函数设置导出属性有什么用?
A:它们会成为环境变量,可以在脚本中访问它们,尤其是脚本中调用的子进程需要时。
Q:如果我编写的脚本修改了已有的环境变量的值,那么执行它会在当前终端生效吗?会影响之前以及之后打开的终端吗?
A:只有通过source方式调用的脚本会生效,您可以查看source命令获得更多信息;其他方式只是在子shell中执行。 之前的不会影响,之后的除非是修改了~/.bashrc这种启动终端时加载的脚本。
Q:我脚本文件中调用~/.bashrc中定义的函数和变量。为什么在新打开的终端中通过 sh 方式调用该脚本或直接运行
这个当前用户有执行权限的脚本却不能使用这些函数和变量?
A:请在~/.bashrc文件中增加export它们的语句。
Q:数组和关联数组也可以设置导出属性吗?
A:是可以的(如果你的bash支持它们),不过有些问题。
Q:为什么我在查看变量或函数导出属性的时候显示的开头是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中带有导出属性的变量或函数。
读到这里,这篇“Linux export命令怎么正确使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。