Linux export 命令
概念
export
命令用于设置或显示环境变量,将shell
变量输出为环境变量,或者将shell
函数输出为环境变量。一个
shell
变量创建时,它不会自动地为在它之后创建的shell
进程所知。而命令export
可以向后面的shell
传递变量的值,即创建环境变量。
语法
export [-fnp][变量名称]=[变量设置值]
参数
- -f :代表[变量名称]中为函数名称
- -n:删除变量的导出属性,即删除环境变量
- -p:列出所有的shell赋予程序的环境变量
使用示例
列出当前所有的环境变量
root@OpenWrt:/# export -p export HOME='/root' export LOGNAME='root' export OLDPWD='/root' export PATH='/usr/sbin:/usr/bin:/sbin:/bin' export PS1='\u@\h:\w\$ ' export PWD='/' export SHELL='/bin/ash' export SHLVL='1' export TERM='linux' export USER='root'
设置环境变量
-
创建
shell
变量SHELLVAR
root@OpenWrt:/# SHELLVAR=helloworld root@OpenWrt:/# root@OpenWrt:/# echo $SHELLVAR #打印变量SHELLVAR helloworld root@OpenWrt:/# export -p #查看当前Shell环境变量 export HOME='/root' export LOGNAME='root' export OLDPWD='/root' export PATH='/usr/sbin:/usr/bin:/sbin:/bin' export PS1='\u@\h:\w\$ ' export PWD='/' export SHELL='/bin/ash' export SHLVL='1' export TERM='linux' export USER='root' 编写 test.sh
shell
脚本,在脚本中打印SHELLVAR
的值#!/bin/sh echo "Print SHELLVAR=$SHELLVAR" 执行 test.sh 脚本,
SHELLVAR
没有值,子shell
无法访问该变量root@OpenWrt:/# ./test.sh #执行脚本是子进程(shell)在执行 Print SHELLVAR= root@OpenWrt:/# -
将
shell
变量输出为环境变量root@OpenWrt:/# export SHELLVAR root@OpenWrt:/# export -p export HOME='/root' export LOGNAME='root' export OLDPWD='/root' export PATH='/usr/sbin:/usr/bin:/sbin:/bin' export PS1='\u@\h:\w\$ ' export PWD='/' export SHELL='/bin/ash' export SHELLVAR='helloworld' #shell 变量 SHELLVAR 已经导出为环境变量了 export SHLVL='1' export TERM='linux' export USER='root' root@OpenWrt:/# 注:既可以使用
export
把已有的shell变量导出为环境变量,也可以直接使用export
创建环境变量执行 test.sh 脚本,此时子
shell
可以访问该变量的值root@OpenWrt:/# ./test.sh #执行脚本是子进程(shell)在执行 Print SHELLVAR=helloworld #可以正常打印出SHELLVAR的值 root@OpenWrt:/#
删除变量或函数的导出属性
-
删除变量的导出属性
export -n [变量名] 删除环境变量
SHELLVAR
后,使用export -p
无法查看到删除的变量root@OpenWrt:/# export -n SHELLVAR root@OpenWrt:/# export -p export HOME='/root' export LOGNAME='root' export OLDPWD='/root' export PATH='/usr/sbin:/usr/bin:/sbin:/bin' export PS1='\u@\h:\w\$ ' export PWD='/' export SHELL='/bin/ash' export SHLVL='1' export TERM='linux' export USER='root' 再次执行
shell
脚本root@OpenWrt:/# ./test.sh #再次执行脚本,SHELLVAR环境变量被删除,子进程无法使用它 Print SHELLVAR= root@OpenWrt:/# -
删除函数的导出属性
同删除变量的导出属性一样,如下示例
定义
shell
函数$ function shell_func_test(){ echo "Just for a test!"; } 编写 test.sh
shell
脚本#!/bin/bash echo "Exec shell func:" shell_func_test #执行shell函数 执行
shell
函数,子shell
中无法访问该函数$ ./test.sh #执行脚本是子进程(shell)在执行 Exec shell func: ./test.sh: line 3: shell_func_test: command not found 给函数添加导出属性(添加到环境变量)
$ export -f shell_func_test $ export -pf shell_func_test () { echo "Just for a test!" } declare -fx shell_func_test 给函数添加导出属性后执行成功
$ ./test.sh Exec shell func: Just for a test! 移除函数导出属性后执行失败
$ export -nf shell_func_test $ export -pf $ ./test.sh Exec shell func: ./test.sh: line 3: shell_func_test: command not found
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)