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'

设置环境变量

  1. 创建 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:/#
  2. 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:/#

删除变量或函数的导出属性

  1. 删除变量的导出属性

    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:/#
  2. 删除函数的导出属性

    同删除变量的导出属性一样,如下示例

    定义 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

【参考】


Linux之export命令

Linux export 命令

posted @   shelmean  阅读(2332)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示