Linux 中 export 命令 对变量发挥什么作用 ?

 

一个变量创建时,它不会自动的被在它之后创建的shell进程(子进程)所知;这时,可用export命令向后面的shell传递变量的值。
export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。

 

参数:

 

  • -f:代表[变量名称]中为函数名称。
  • -n:删除指定的变量;实际未删除,只是不会输出到后续指令的执行环境中。
  • -p:显示所有的shell赋予子程序的环境变量。

 

 

 

001、 两种变量:普通变量和环境变量

(base) [root@pc1 test02]# ls
a.txt
(base) [root@pc1 test02]# cat a.txt              ## 准备一个测试文件
01 02 03 04
05 06 07 08
09 10 11 12
(base) [root@pc1 test02]# aa=2                   ## 定义一个变量aa
(base) [root@pc1 test02]# cut -d " " -f $aa a.txt      ## 在当前的sheel终端,根据输出结果,可以判断aa的环境变量生效
02
06
10
(base) [root@pc1 test02]# echo 'cut -d " " -f $aa a.txt' > test.sh      ## 然后将该命令输出到一个文本文件中
(base) [root@pc1 test02]# cat test.sh                                   ## 查看输出结果
cut -d " " -f $aa a.txt
(base) [root@pc1 test02]# bash test.sh                                  ## 运行该脚本; 报错,说明在脚本文件中aa变量不能被识别
cut: invalid byte, character or field list
Try 'cut --help' for more information.
(base) [root@pc1 test02]# export aa=2                                   ## 此时在定义aa变量的前面增加关键字 export
(base) [root@pc1 test02]# cat test.sh 
cut -d " " -f $aa a.txt
(base) [root@pc1 test02]# bash test.sh                                  ## 执行该脚本文件,成功执行,说明aa变量可以被识别; 说明export命令 增加了 aa变量的作用范围, 扩大了作用域?? export的这种作用称作什么?? 导出属性?
02
06
10

 

002、 如何区分在不适用export关键字 和 使用export关键字的变量

(base) [root@pc1 test02]# aa=100                 ## 不使用export关键字,定义变量aa
(base) [root@pc1 test02]# export -p | tail       ## 查看是否在export定义的变量目录中, 没有出现aa变量
declare -x SSH_CLIENT="192.168.164.1 51663 22"
declare -x SSH_CONNECTION="192.168.164.1 51663 192.168.164.129 22"
declare -x SSH_TTY="/dev/pts/2"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_DATA_DIRS="/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="3"
declare -x _CE_CONDA=""
declare -x _CE_M=""
(base) [root@pc1 test02]# export aa=100          ## 使用export关键字,定义变量aa    
(base) [root@pc1 test02]# export -p | tail       ## 查看是否在export定义的变量目录中, 出现aa变量
declare -x SSH_CONNECTION="192.168.164.1 51663 192.168.164.129 22"
declare -x SSH_TTY="/dev/pts/2"
declare -x TERM="xterm"
declare -x USER="root"
declare -x XDG_DATA_DIRS="/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share"
declare -x XDG_RUNTIME_DIR="/run/user/0"
declare -x XDG_SESSION_ID="3"
declare -x _CE_CONDA=""
declare -x _CE_M=""
declare -x aa="100"

 。

 

参考:

01、https://blog.csdn.net/Xminyang/article/details/125117111

 

posted @ 2023-11-12 16:24  小鲨鱼2018  阅读(46)  评论(0编辑  收藏  举报