欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺析linux環(huán)境變量export命令詳解

 更新時(shí)間:2016年11月24日 15:44:27   作者:vileyking  
這篇文章主要介紹了淺析linux環(huán)境變量export命令詳解 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。

由host $ export DVSDK="${HOME}/ti-dvsdk_dm368-evm_xx_xx_xx_xx"引發(fā)的問(wèn)題

1、${HOME}:首先, HOME 是個(gè)變量,它代表你的 home 目錄,變量前必須加上 $ 符號(hào),否則會(huì)報(bào)錯(cuò)

usr/local/dvsdk為dvsdk的destination folder 由#echo $DVSDK測(cè)試環(huán)境變量添加成功否

2、想要使得開機(jī)時(shí)自動(dòng)加載這個(gè)環(huán)境變量免除以后每次設(shè)置,可將其寫入/etc/re.local

 Linux export 命令

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

語(yǔ)  法:export [-fnp][變量名稱]=[變量設(shè)置值]

補(bǔ)充說(shuō)明:在shell中執(zhí)行程序時(shí),shell會(huì)提供一組環(huán)境變量。 export可新增,修改或刪除環(huán)境變量,供后續(xù)執(zhí)行的程序使用。export的效力僅及于該此登陸操作。

參  數(shù):

    -f  代表[變量名稱]中為函數(shù)名稱。

 -n  刪除指定的變量。變量實(shí)際上并未刪除,只是不會(huì)輸出到后續(xù)指令的執(zhí)行環(huán)境中。

 -p  列出所有的shell賦予程序的環(huán)境變量。

一個(gè)變量創(chuàng)建時(shí),它不會(huì)自動(dòng)地為在它之后創(chuàng)建的shell進(jìn)程所知。而命令export可以向后面的shell傳遞變量的值。當(dāng)一個(gè)shell腳本調(diào)用并執(zhí)行時(shí),它不會(huì)自動(dòng)得到原為腳本(調(diào)用者)里定義的變量的訪問(wèn)權(quán),除非這些變量已經(jīng)被顯式地設(shè)置為可用。export命令可以用于傳遞一個(gè)或多個(gè)變量的值到任何后繼腳本。     ----《UNIX教程》

在 linux 里設(shè)置環(huán)境變量的方法 ( export PATH )

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

1、直接用export命令:

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

查看是否已經(jīng)設(shè)好,可用命令export查看:

[root@localhost bin]#export
declare -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" 

可以看到灰色部分有設(shè)置的路徑,說(shuō)明環(huán)境變量已經(jīng)設(shè)好,PATH里面已經(jīng)有了我要加的編譯器的路徑。

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"

后兩種方法一般需要重新注銷系統(tǒng)才能生效,最后可以通過(guò)echo命令測(cè)試一下:

# echo $PATH

看看輸出里面是不是已經(jīng)有了 /my_new_path這個(gè)路徑了。

另有: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”等路徑已經(jīng)在系統(tǒng)環(huán)境變量中了,如果可執(zhí)行文件在這幾個(gè)標(biāo)準(zhǔn)位置,在終端命令行輸入該軟件可執(zhí)行文件的文件名和參數(shù)(如果需要參數(shù)),回車即可。

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

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

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

格式如下():

# 軟件名-版本號(hào)

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

其他環(huán)境變量=$其他環(huán)境變量:...

在“profile”和“.bash_profile”中,“#”是注釋符號(hào),寫在這里除了視覺(jué)分隔外沒(méi)有任何效果。

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

相關(guān)的環(huán)境變量生效后,就不必老跑到軟件的可執(zhí)行文件目錄里去操作了。

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

執(zhí)行一個(gè)腳本時(shí),會(huì)先開啟一個(gè)子shell環(huán)境(不知道執(zhí)行其它程序是不是這樣),然后將父shell中的所有系統(tǒng)環(huán)境變量復(fù)制過(guò)來(lái),這個(gè)腳本中的語(yǔ)句就在子shell中執(zhí)行。(也就是說(shuō)父shell的環(huán)境變量在子shell中可以調(diào)用,但反過(guò)來(lái)就不行,如果在子shell中定義了環(huán)境變量,則只對(duì)該shell或者它的子shell有效,當(dāng)該子shell結(jié)束時(shí),也可以理解為腳本執(zhí)行完時(shí),變量消失。)為了證明這一點(diǎn),請(qǐng)看腳本內(nèi)容: 

test='value'
  export test

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

test='value'
  export test
  bash

這里在腳本最后一行再開一個(gè)子shell,該shell應(yīng)該是腳本文件所在shell的子shell,這個(gè)腳本執(zhí)行完后,是可以看到test這個(gè)變量的,因?yàn)楝F(xiàn)在是處于它的子shell中,當(dāng)用exit退出子shell后,test變量消失。

如果用source對(duì)腳本進(jìn)行執(zhí)行時(shí),如果不加export,就不會(huì)在子shell中看到這個(gè)變量,因?yàn)樗€不是一個(gè)系統(tǒng)環(huán)境變量呀,如腳本內(nèi)容是: 

test='value'

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

所以得出的結(jié)論是:1、執(zhí)行腳本時(shí)是在一個(gè)子shell環(huán)境運(yùn)行的,腳本執(zhí)行完后該子shell自動(dòng)退出;2、一個(gè)shell中的系統(tǒng)環(huán)境變量才會(huì)被復(fù)制到子shell中(用export定義的變量);3、一個(gè)shell中的系統(tǒng)環(huán)境變量只對(duì)該shell或者它的子shell有效,該shell結(jié)束時(shí)變量消失(并不能返回到父shell中)。3、不用export定義的變量只對(duì)該shell有效,對(duì)子shell也是無(wú)效的。

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vim 強(qiáng)制保存只讀類型文件的方法

    Vim 強(qiáng)制保存只讀類型文件的方法

    你是否會(huì)和我一樣經(jīng)常碰到這樣的情景:在VIM中編輯了一個(gè)系統(tǒng)配置文件,當(dāng)需要保存時(shí)才發(fā)現(xiàn)當(dāng)前的用戶對(duì)該文件沒(méi)有寫入的權(quán)限。這個(gè)時(shí)候就需要強(qiáng)制保存只讀類型文件的方法了,這篇文章就介紹了Vim強(qiáng)制保存只讀類型文件的方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-01-01
  • Linux服務(wù)器中對(duì)于Memcache的安裝配置方法

    Linux服務(wù)器中對(duì)于Memcache的安裝配置方法

    Linux服務(wù)器中對(duì)于Memcache的安裝配置教程,服務(wù)器端主要是安裝memcache服務(wù)器端,目前的最新版本是 memcached-1.3.0
    2011-05-05
  • linux登錄時(shí)候提示字符集有問(wèn)題解決方法

    linux登錄時(shí)候提示字符集有問(wèn)題解決方法

    在本篇文章里小編給大家整理的是一篇關(guān)于linux登錄時(shí)候提示字符集有問(wèn)題解決方法,有需要的朋友們可以參考下。
    2019-11-11
  • centos7 安裝mysql和mysqlclient遇到的坑總結(jié)

    centos7 安裝mysql和mysqlclient遇到的坑總結(jié)

    這篇文章主要介紹了centos7 安裝mysql和mysqlclient遇到的坑以及相關(guān)知識(shí)點(diǎn)代碼,有需要的朋友們參考下。
    2019-08-08
  • ubuntu下Matlab_Linux添加工具包操作步驟

    ubuntu下Matlab_Linux添加工具包操作步驟

    本文以rvctools為例給大家通過(guò)圖文并茂的形式介紹ubuntu下Matlab_Linux添加工具包的教程,需要的朋友可以參考下
    2018-03-03
  • ubuntu下安裝Python多版本的方法及注意事項(xiàng)

    ubuntu下安裝Python多版本的方法及注意事項(xiàng)

    倒霉的今天我居然把ubuntu系統(tǒng)給完壞了,因?yàn)槲野裵ython3卸載了,然后就哦了,下面小編給大家分享下ubuntu下管理python的多個(gè)版本的方法,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看下吧
    2016-10-10
  • centos7下如何安裝ftp服務(wù)

    centos7下如何安裝ftp服務(wù)

    這篇文章主要介紹了centos7下如何安裝ftp服務(wù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • linux系統(tǒng)中使用Vim刪除偶數(shù)行或者奇數(shù)行

    linux系統(tǒng)中使用Vim刪除偶數(shù)行或者奇數(shù)行

    vim中進(jìn)行奇偶數(shù)行操作,思路很簡(jiǎn)單,就是一次匹配兩行,然后刪除奇數(shù)行,刪除偶數(shù)行或者兩行合并。下面我們來(lái)看看具體怎么操作吧
    2014-08-08
  • linux(centos7)搭建SVN服務(wù)器的思路

    linux(centos7)搭建SVN服務(wù)器的思路

    這篇文章主要為大家詳細(xì)介紹了linux搭建SVN服務(wù)器的思路,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 阿里云服務(wù)器yum源更新問(wèn)題從何而來(lái)

    阿里云服務(wù)器yum源更新問(wèn)題從何而來(lái)

    阿里云服務(wù)器yum源的更新問(wèn)題,問(wèn)題從何而來(lái)的呢?下面通過(guò)本文給大家介紹阿里云服務(wù)器yum源更新問(wèn)題,一起看看吧
    2016-05-05

最新評(píng)論