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

浙公网安备 33010602011771号