亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Linux服務器 > 正文

淺析linux環境變量export命令詳解

2024-09-05 23:03:02
字體:
來源:轉載
供稿:網友

由host $ export DVSDK="${HOME}/ti-dvsdk_dm368-evm_xx_xx_xx_xx"引發的問題

1、${HOME}:首先, HOME 是個變量,它代表你的 home 目錄,變量前必須加上 $ 符號,否則會報錯

usr/local/dvsdk為dvsdk的destination folder 由#echo $DVSDK測試環境變量添加成功否

2、想要使得開機時自動加載這個環境變量免除以后每次設置,可將其寫入/etc/re.locallinux中export命令,linux下export命令,linux,export命令

 Linux export 命令

功能說明:設置或顯示環境變量。(比如我們要用一個命令,但這個命令的執行文件不在當前目錄,這樣我們每次用的時候必須指定執行文件的目錄,麻煩,在代碼中先執行export,這個相當于告訴程序,執行某某東西時,需要的文件或什么東東在這些目錄里)

語  法:export [-fnp][變量名稱]=[變量設置值]

補充說明:在shell中執行程序時,shell會提供一組環境變量。 export可新增,修改或刪除環境變量,供后續執行的程序使用。export的效力僅及于該此登陸操作。

參  數:

    -f  代表[變量名稱]中為函數名稱。

 -n  刪除指定的變量。變量實際上并未刪除,只是不會輸出到后續指令的執行環境中。

 -p  列出所有的shell賦予程序的環境變量。

一個變量創建時,它不會自動地為在它之后創建的shell進程所知。而命令export可以向后面的shell傳遞變量的值。當一個shell腳本調用并執行時,它不會自動得到原為腳本(調用者)里定義的變量的訪問權,除非這些變量已經被顯式地設置為可用。export命令可以用于傳遞一個或多個變量的值到任何后繼腳本。     ----《UNIX教程》

linux 里設置環境變量的方法 ( export PATH )

 一般來說,配置交叉編譯工具鏈的時候需要指定編譯工具的路徑,此時就需要設置環境變量。例如我的mips-linux-gcc編譯器在“/opt/au1200_rm /build_tools/bin”目錄下,build_tools就是我的編譯工具,則有如下三種方法來設置環境變量:

1、直接用export命令:

#export PATH=$PATH:/opt/au1200_rm/build_tools/bin

查看是否已經設好,可用命令export查看:

[root@localhost bin]#exportdeclare -x BASH_ENV="/root/.bashrc"declare -x G_BROKEN_FILENAMES="1"declare -x HISTSIZE="1000"declare -x HOME="/root"declare -x HOSTNAME="localhost.localdomain"declare -x INPUTRC="/etc/inputrc"declare -x LANG="zh_CN.GB18030"declare -x LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"declare -x LOGNAME="root"declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:"declare -x MAIL="/var/spool/mail/root"declare -x OLDPWD="/opt/au1200_rm/build_tools"declare -x PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/opt/au1200_rm/build_tools/bin"declare -x PWD="/opt/au1200_rm/build_tools/bin"declare -x SHELL="/bin/bash"declare -x SHLVL="1"declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"declare -x SSH_AUTH_SOCK="/tmp/ssh-XX3LKWhz/agent.4242"declare -x SSH_CLIENT="10.3.37.152 2236 22"declare -x SSH_CONNECTION="10.3.37.152 2236 10.3.37.186 22"declare -x SSH_TTY="/dev/pts/2"declare -x TERM="linux"declare -x USER="root"declare -x USERNAME="root" 

可以看到灰色部分有設置的路徑,說明環境變量已經設好,PATH里面已經有了我要加的編譯器的路徑。

2、修改profile文件:

#vi /etc/profile

在里面加入:

export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

3. 修改.bashrc文件:

# vi /root/.bashrc

在里面加入:

export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

后兩種方法一般需要重新注銷系統才能生效,最后可以通過echo命令測試一下:

# echo $PATH

看看輸出里面是不是已經有了 /my_new_path這個路徑了。

另有:4. 修改/etc/re.local文件:
            

# vi /etc/re.local

在里面加入:      

 export PATH="$PATH:/opt/au1200_rm/build_tools/bin"

-----------------------------------------------------------------------------------------------------------------------

“/bin”、“/sbin”、“ /usr/bin”、“/usr/sbin”、“/usr/local/bin”等路徑已經在系統環境變量中了,如果可執行文件在這幾個標準位置,在終端命令行輸入該軟件可執行文件的文件名和參數(如果需要參數),回車即可。

如果不在標準位置,文件名前面需要加上完整的路徑。不過每次都這樣跑就太麻煩了,一個“一勞永逸”的辦法是把這個路徑加入環境變量。命令 export $PATH="路徑”(或“PATH=$PATH:路徑”) ($PATH為環境變量名,如DVSDK;調用時用$DVSDK)可以把這個路徑加入環境變量,但是退出這個命令行就失效了。要想永久生效,需要把這行添加到環境變量文件里。有兩個文件可選:“/etc/profile”和用戶主目錄下的“.bash_profile”,“/etc/profile”對系統里所有用戶都有效,用戶主目錄下的“.bash_profile”只對這個用戶有效。

export $PATH="$PATH:路徑1:路徑2:...:路徑n” (或“PATH=$PATH:路徑1:路徑2:...:路徑n"?。?,意思是可執行文件的路徑包括原先設定的路徑,也包括從“路徑1”到“路徑n”的所有路徑。當用戶輸入一個一串字符并按回車后,shell會依次在這些路徑里找對應的可執行文件并交給系統核心執行。那個“$PATH”表示原先設定的路徑仍然有效,注意不要漏掉。某些軟件可能還有“PATH”以外類型的環境變量需要添加,但方法與此相同,并且也需要注意“$”。

注意,與DOS/Window不同,UNIX類系統環境變量中路徑名用冒號分隔,不是分號。另外,軟件越裝越多,環境變量越添越多,為了避免造成混亂,建議所有語句都添加在文件結尾,按軟件的安裝順序添加。

格式如下():

# 軟件名-版本號

PATH=$PATH:路徑1:路徑 2:...:路徑n

其他環境變量=$其他環境變量:...

在“profile”和“.bash_profile”中,“#”是注釋符號,寫在這里除了視覺分隔外沒有任何效果。

設置完畢,注銷并重新登錄,設置就生效了。如果不注銷,直接在shell里執行這些語句,也能生效,但是作用范圍只限于執行了這些語句的shell。

相關的環境變量生效后,就不必老跑到軟件的可執行文件目錄里去操作了。

----------------------------------------------------------------------------------------------------------------------- 

執行一個腳本時,會先開啟一個子shell環境(不知道執行其它程序是不是這樣),然后將父shell中的所有系統環境變量復制過來,這個腳本中的語句就在子shell中執行。(也就是說父shell的環境變量在子shell中可以調用,但反過來就不行,如果在子shell中定義了環境變量,則只對該shell或者它的子shell有效,當該子shell結束時,也可以理解為腳本執行完時,變量消失。)為了證明這一點,請看腳本內容: 

test='value'  export test

這樣的腳本執行完后,test實際上是不存在的。接著看下面的:  

test='value'  export test  bash

這里在腳本最后一行再開一個子shell,該shell應該是腳本文件所在shell的子shell,這個腳本執行完后,是可以看到test這個變量的,因為現在是處于它的子shell中,當用exit退出子shell后,test變量消失。

如果用source對腳本進行執行時,如果不加export,就不會在子shell中看到這個變量,因為它還不是一個系統環境變量呀,如腳本內容是: 

test='value'

用source執行后,在shell下是能看到這個變量,但再執行bash開一個子shell時,test是不會被復制到子shell中的,因為執行腳本文件其實也是在一個子shell中運行,所以我再建另一個腳本文件執行時,是不會輸入任何東西的,內容如:echo $test。所以這點特別注意了,明明在提示符下可以用echo $test輸出變量值,為什么把它放進腳本文件就不行了呢?

所以得出的結論是:1、執行腳本時是在一個子shell環境運行的,腳本執行完后該子shell自動退出;2、一個shell中的系統環境變量才會被復制到子shell中(用export定義的變量);3、一個shell中的系統環境變量只對該shell或者它的子shell有效,該shell結束時變量消失(并不能返回到父shell中)。3、不用export定義的變量只對該shell有效,對子shell也是無效的。

后來根據版主的提示,整理了一下貼子:為什么一個腳本直接執行和用source執行不一行呢?這也是我自己碰到的一個問題。manual原文是這樣的:Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename.明白了為什么不一樣了吧?直接執行一個腳本文件是在一個子shell中運行的,而source則是在當前shell環境中運行的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品99久久久久久久久| 日本成人精品在线| 日韩经典中文字幕在线观看| 国产精品欧美风情| 国外色69视频在线观看| 日韩成人在线播放| 欧美专区福利在线| 国产亚洲综合久久| 亚洲精品日韩在线| 日韩中文字幕国产精品| 在线观看日韩www视频免费| 国产精品中文字幕在线观看| 国外成人性视频| 日韩av在线导航| 久久久精品影院| 亚洲美腿欧美激情另类| 国产日韩在线观看av| 久久精品99久久久久久久久| 欧美孕妇毛茸茸xxxx| 丰满岳妇乱一区二区三区| 欧美大片免费观看| 九色精品免费永久在线| 亚洲欧美www| 日本久久久a级免费| 奇米4444一区二区三区| 亚洲无亚洲人成网站77777| 九九综合九九综合| 欧美日韩国产中文精品字幕自在自线| 久久久精品视频成人| 亚洲网站在线播放| 岛国视频午夜一区免费在线观看| 亚洲色图美腿丝袜| 亚洲黄色在线看| 中文字幕久热精品视频在线| 国产极品精品在线观看| 国产亚洲欧美另类中文| 欧美一级高清免费播放| 91精品在线看| 国产精品v片在线观看不卡| 欧美特黄级在线| 欧美精品成人91久久久久久久| 亚洲日本欧美日韩高观看| 自拍偷拍亚洲一区| 日韩美女视频在线观看| www.欧美免费| 久久福利网址导航| 国产中文字幕日韩| 日日狠狠久久偷偷四色综合免费| 国产成人啪精品视频免费网| 亚洲永久在线观看| 欧美精品精品精品精品免费| 亚洲美女视频网| 欧美午夜宅男影院在线观看| 中文字幕无线精品亚洲乱码一区| 国产视频久久久久| 精品免费在线视频| 一区二区三区视频在线| 欧美精品激情blacked18| 日韩中文字幕国产精品| 亚洲第一区在线| 九九视频直播综合网| 欧美性受xxxx白人性爽| 亚洲国产黄色片| 亚洲精品美女在线观看播放| 国产精品老女人视频| 精品亚洲一区二区三区四区五区| 黄色成人在线免费| 国产欧美中文字幕| 国产精品欧美亚洲777777| 成人动漫网站在线观看| 精品久久久91| 国产精品视频最多的网站| 欧美成人激情视频免费观看| 九九九热精品免费视频观看网站| 欧美日韩成人网| 久久综合国产精品台湾中文娱乐网| 狠狠色狠狠色综合日日小说| 久久99热精品这里久久精品| www.久久久久久.com| 欧美日韩国产精品一区| 国产成人精品免费视频| 97avcom| 日韩精品在线观看一区二区| 欧美激情精品久久久久| 亚洲老板91色精品久久| 日韩免费高清在线观看| 国产精品视频精品视频| 亚洲va国产va天堂va久久| 亚洲高清一二三区| 亚洲午夜久久久久久久| 精品亚洲永久免费精品| 91久久久国产精品| 国产精品最新在线观看| 亚洲第一免费播放区| 97国产精品人人爽人人做| 91免费观看网站| 欧美福利视频网站| 懂色av中文一区二区三区天美| 亚州成人av在线| 欧美孕妇孕交黑巨大网站| 国产成人在线精品| 欧美日韩在线视频观看| 国产日韩欧美日韩| 青草成人免费视频| 日韩国产高清视频在线| 精品久久久久久久久久久| 国产精品丝袜视频| 亚洲美女激情视频| 日韩av电影手机在线观看| 日韩电视剧免费观看网站| 国产在线视频欧美| 国产精品日韩欧美| 亚洲国产小视频在线观看| 亚洲成人在线网| 欧美一级在线亚洲天堂| 国产激情999| 色综合天天综合网国产成人网| 九九热这里只有在线精品视| 亚洲老头同性xxxxx| 亚洲风情亚aⅴ在线发布| 国产精品一区二区在线| 亚洲bt欧美bt日本bt| 国产精品一区二区久久久久| 欧美午夜精品久久久久久浪潮| 国产一区二区精品丝袜| 色综合男人天堂| 欧美激情精品久久久久久黑人| 中文字幕久精品免费视频| 亚洲少妇中文在线| 精品国产一区二区三区久久久狼| 丝袜美腿精品国产二区| 欧美激情一区二区三区成人| 97精品国产97久久久久久春色| 国产亚洲精品高潮| 国产精品观看在线亚洲人成网| 亚洲老司机av| 久久久久久久久综合| 韩剧1988免费观看全集| 日韩少妇与小伙激情| 久久精品视频中文字幕| 日韩久久精品成人| 国产91ⅴ在线精品免费观看| 国外成人在线直播| 国产欧美在线看| 岛国av在线不卡| 日韩亚洲国产中文字幕| 国产香蕉精品视频一区二区三区| 亚洲男人天堂2024| 国产精品久久久久久久av电影| 日韩av免费在线| 国产中文字幕亚洲| 亚洲国产精品中文| 68精品久久久久久欧美| 亚洲欧美第一页| 亚洲黄色在线观看| 久久久久久久久中文字幕| 欧美二区在线播放| 中文字幕综合一区| 欧美日韩一区二区三区在线免费观看| 国产精品久久久久久久电影| 成人福利在线视频| 久久久久久综合网天天| 久久精品这里热有精品| 国产成人一区二区在线|