Update export.md

本次更新修正了格式问题(注释等)
This commit is contained in:
ZhuangZhu-74 2019-07-01 15:50:25 +08:00 committed by GitHub
parent 43458c72bb
commit 5af632fb3c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 30 additions and 32 deletions

View File

@ -11,9 +11,9 @@ export -p
### 主要用途
- 新建一到多个变量并设置导出属性。
- 定义一到多个变量并设置导出属性。
- 修改一到多个拥有导出属性的变量的值。
- 修改一到多个变量的值并设置导出属性
- 删除一到多个变量的导出属性。
@ -28,18 +28,14 @@ export -p
#### 选项
-p显示全部拥有导出属性的变量。
-pf显示全部拥有导出属性的函数。
-n删除变量的导出属性。
-nf删除变量的导出属性。
```shell
-f指向函数。
-n删除变量的导出属性。
-p显示全部拥有导出属性的变量。
-pf显示全部拥有导出属性的函数。
-nf删除函数的导出属性。
--:在它之后的选项无效。
```
#### 参数
@ -47,15 +43,12 @@ name可选变量名或已定义函数名。
value可选变量的值。
#### 返回值
export返回true除非你提供了非法选项或非法名称。
### 例子
常见用法
```shell
# 显示全部拥有导出属性的变量。
# export -p
@ -64,40 +57,46 @@ export返回true除非你提供了非法选项或非法名称。
# export -pf
```
```shell
#首先删除要演示的变量名
# 首先删除要演示的变量名
#unset a b
#新建变量的同时增加导出属性
# 定义变量的同时增加导出属性
export a b=3
#当然也可以这样
# 当然也可以先定义后增加导出属性
b=3
export b
#修改拥有导出属性的变量的值
# 修改拥有导出属性的变量的值
export a=5 b=7
#当然也可以直接赋值修改
# 当然也可以直接赋值修改
a=5;b=7
#删除变量的导出属性
# 删除变量的导出属性
export -n a b
```
```
#首先删除要演示的函数名
```shell
# 首先删除要演示的函数名
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
```
```shell
# 添加环境变量JAVA到`~/.bashrc`
PATH=/usr/local/jdk1.7.0/bin:$PATH
# 添加当前位置到动态库环境变量
export LD_LIBRARY_PATH=$(pwd):${LD_LIBRARY_PATH}
```
### 错误用法
- 对未定义的函数添加导出属性。
@ -126,7 +125,7 @@ Q我脚本文件中调用`~/.bashrc`中定义的函数和变量。为什么
A请在`~/.bashrc`文件中增加export它们的语句。另请参阅 **知识点** 段落。
Q列表和关联数组也可以设置导出属性吗?
Q数组和关联数组也可以设置导出属性吗?
A是可以的如果你的bash支持它们不过有些问题 **参考链接2** )。
@ -142,7 +141,7 @@ A因为`declare`也能够设置变量或函数的导出属性,详见`declar
### 知识点
`info bash`或 [bash在线文档](http://www.gnu.org/software/bash/manual/bash.html) 的
在`info bash`或 [bash在线文档](http://www.gnu.org/software/bash/manual/bash.html) 的
`3.7.3`节提到了shell执行环境其中涉及变量和函数的内容如下
> - shell parameters that are set by variable assignment or with set or inherited from the shells parent in the environment
@ -156,21 +155,20 @@ A因为`declare`也能够设置变量或函数的导出属性,详见`declar
那么子shell确实继承了父shell中带有导出属性的变量或函数。
可参考链接 [执行脚本方式的区别](https://blog.csdn.net/soaringlee_fighting/article/details/78759448)
可参考链接 [执行脚本方式的区别](https://blog.csdn.net/soaringlee_fighting/article/details/78759448)
### 参考链接
1. [关于bashrc profile文件的讨论](https://www.cnblogs.com/hongzg1982/articles/2101792.html)
2. [关于export数组的讨论](https://stackoverflow.com/questions/5564418/exporting-an-array-in-bash-script)
3. [export -pf用法](https://unix.stackexchange.com/questions/22796/can-i-export-functions-in-bash)
4. [环境变量和shell变量的区别](https://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference)
### 实例
### 扩展阅读
一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。查看已经存在的环境变量: