天天看點

export設定環境變量

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

1、直接用export指令:

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

檢視是否已經設好,可用指令export檢視:

[[email protected] 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

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這個路徑了。

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

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

  如果不在标準位置,檔案名前面需要加上完整的路徑。不過每次都這樣跑就太麻煩了,一個“一勞永逸”的辦法是把這個路徑加入環境變量。指令 “PATH=$PATH:路徑”可以把這個路徑加入環境變量,但是退出這個指令行就失效了。要想永久生效,需要把這行添加到環境變量檔案裡。有兩個檔案可選:“/etc/profile”和使用者主目錄下的“.bash_profile”,“/etc/profile”對系統裡所有使用者都有效,使用者主目錄下的“.bash_profile”隻對這個使用者有效。

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

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

  格式如下():

  # 軟體名-版本号

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

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

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

  設定完畢,登出并重新登入,設定就生效了。如果不登出,直接在shell裡執行這些語句,也能生效,但是作用範圍隻限于執行了這些語句的shell。

  相關的環境變量生效後,就不必老跑到軟體的可執行檔案目錄裡去操作了。

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

source指令用法:

source FileName

作用:在目前bash環境下讀取并執行FileName中的指令。

注:該指令通常用指令“.”來替代。

如:source .bash_rc 與 . .bash_rc 是等效的。

source指令(從 C Shell 而來)是bash shell的内置指令。點指令,就是個點符号,(從Bourne

Shell而來)是source的另一名稱。同樣的,目前腳本中配置的變量也将作為腳本的環境,source(或點)指令通常用于重新執行剛修改的初始化

文檔,如 .bash_profile 和 .profile 等等。例如,假如在登入後對 .bash_profile 中的 EDITER 和

TERM 變量做了修改,則能夠用source指令重新執行 .bash_profile 中的指令而不用登出并重新登入。

比如您在一個腳本裡export $KKK=111 ,假如您用./a.sh執行該腳本,執行完畢後,您運作 echo $KKK

,發現沒有值,假如您用source來執行 ,然後再echo

,就會發現KKK=111。因為調用./a.sh來執行shell是在一個子shell裡運作的,是以執行後,結構并沒有反應到父shell裡,但是

source不同他就是在本shell中執行的,是以能夠看到結果

source指令(從 C Shell 而來)是bash shell的内置指令。點指令,就是一個點符号,(從Bourne

Shell而來)是source的另一名稱。這兩個指令都以一個腳本為參數,該腳本将作為目前shell的環境執行,即不會啟動一個新的子程序。所有在腳

本中設定的變量将成為目前Shell的一部分。同樣的,目前腳本中設定的變量也将作為腳本的環境,source(或點)指令通常用于重新執行剛修改的初始

化檔案,如 .bash_profile 和 .profile 等等。例如,如果在登入後對 .bash_profile 中的 EDITER 和

TERM 變量做了修改,則可以用source指令重新執行 .bash_profile 中的指令而不用登出并重新登入。象

.bash_profile 或其它類似的Shell腳本這樣,檔案無需可執行權限即可用source或點指令執行。

source指令的一個妙用

在編譯核心時,常常要反複輸入一長串指令,如

make mrproper

make menuconfig

make dep

make clean

make bzImage

.......

這些指令既長,又繁瑣。而且有時候容易輸錯,浪費你的時間和精力。如果把這些指令做成一個檔案,讓它自動按順序執行,對于需要多次反複編譯核心的用

戶來說,會很友善。用source指令可以辦到這一點。它的作用就是把一個檔案的内容當成是shell來執行。先在/usr/src/linux-

2.4.20目錄下建立一個檔案,取名為make_command:

在其中輸入如下内容:

make mrproper &&

make menuconfig &&

make dep &&

make clean &&

make bzImage &&

make modules &&

make modules_install &&

cp arch/i386/boot/bzImge /boot/vmlinuz_new &&

cp System.map /boot &&

vi /etc/lilo.conf &&

lilo -v

檔案建立好之後,以後每次編譯核心,隻需要在/usr/src/linux-2.4.20下輸入

source make_command

就行了。這個檔案也完全可以做成腳本,隻需稍加改動即可。這裡主要是讓大家了解source的用法。如果你用的不是lilo來引導系統,可以把最後兩句話去掉。配置你自己的引導程式來引導新核心。

shell程式設計中的指令有時和C語言是一樣的。&&表示與,||表示或。把兩個指令用&&聯接起來,如

make mrproper && make menuconfig

,表示要第一個指令執行成功才能執行第二個指令。對執行順序有要求的指令能保證一旦有錯誤發生,下面的指令不會盲目地繼續執行。