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 命令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM