1.動(dòng)態(tài)庫路徑的設(shè)置 Linux下調(diào)用動(dòng)態(tài)庫和windows不一樣.linux 可執(zhí)行程序是靠配置文件去讀取路徑的,因此有些時(shí)候需要設(shè)置路徑 export LD_LIBRARY_PATH=/home/.....(動(dòng)態(tài)庫的目錄) 不過這種設(shè)置方法只是在當(dāng)前的session中有效 你可以修改配置文件實(shí)現(xiàn)任何session都有效 2.環(huán)境變量的設(shè)置 一般來說,,配置交叉編譯工具鏈的時(shí)候需要指定編譯工具的路徑,此時(shí)就需要設(shè)置環(huán)境變量,。例如我的mips-linux-gcc編譯器在“/opt/au1200_rm/build_tools/bin”目錄下,,build_tools就是我的編譯工具,則有如下三種方法來設(shè)置環(huán)境變量: 1,、直接用export命令: 2、修改profile文件: 讓環(huán)境變量立即生效需要執(zhí)行如下命令: #source /etc/profile 3. 修改.bashrc文件: 后兩種方法一般需要重新注銷系統(tǒng)才能生效,,最后可以通過echo命令測(cè)試一下: “/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)位置,,文件名前面需要加上完整的路徑。不過每次都這樣跑就太麻煩了,,一個(gè)“一勞永逸”的辦法是把這個(gè)路徑加入環(huán)境變量,。命令 “PATH=$PATH:路徑”可以把這個(gè)路徑加入環(huán)境變量,但是退出這個(gè)命令行就失效了,。要想永久生效,,需要把這行添加到環(huán)境變量文件里。有兩個(gè)文件可選:“/etc/profile”和用戶主目錄下的“.bash_profile”,,“/etc/profile”對(duì)系統(tǒng)里所有用戶都有效,,用戶主目錄下的“.bash_profile”只對(duì)這個(gè)用戶有效。 “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)境變量越添越多,,為了避免造成混亂,建議所有語句都添加在文件結(jié)尾,,按軟件的安裝順序添加,。 格式如下(): # 軟件名-版本號(hào) PATH=$PATH:路徑1:路徑2:...:路徑n 其他環(huán)境變量=$其他環(huán)境變量:... 在“profile”和“.bash_profile”中,“#”是注釋符號(hào),,寫在這里除了視覺分隔外沒有任何效果,。 設(shè)置完畢,注銷并重新登錄,,設(shè)置就生效了,。如果不注銷,直接在shell里執(zhí)行這些語句,,也能生效,,但是作用范圍只限于執(zhí)行了這些語句的shell。 相關(guān)的環(huán)境變量生效后,,就不必老跑到軟件的可執(zhí)行文件目錄里去操作了,。 from:http://blog.csdn.net/kpgood/archive/2009/03/07/3965446.aspx 使用linux的朋友越來越多了,在linux下做開發(fā)首先就是需要配置環(huán)境變量,,下面以配置java環(huán)境變量為例介紹三種配置環(huán)境變量的方法,。
1.修改/etc/profile文件 如果你的計(jì)算機(jī)僅僅作為開發(fā)使用時(shí)推薦使用這種方法,因?yàn)樗杏脩舻膕hell都有權(quán)使用這些環(huán)境變量,,可能會(huì)給系統(tǒng)帶來安全性問題,。
(1)用文本編輯器打開/etc/profile
(2)在profile文件末尾加入: JAVA_HOME=/usr/share/jdk1.5.0_05 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH
(3)重新登錄
注解: a. 你要將 /usr/share/jdk1.5.0_05jdk 改為你的jdk安裝目錄
b. linux下用冒號(hào)“:”來分隔路徑
c. $PATH / $CLASSPATH / $JAVA_HOME 是用來引用原來的環(huán)境變量的值,在設(shè)置環(huán)境變量時(shí)特別要注意不能把原來的值給覆蓋掉了,這是一種常見的錯(cuò)誤,。
d. CLASSPATH中當(dāng)前目錄“.”不能丟,把當(dāng)前目錄丟掉也是常見的錯(cuò)誤,。
e. export是把這三個(gè)變量導(dǎo)出為全局變量,。
f. 大小寫必須嚴(yán)格區(qū)分。
2. 修改.bashrc文件 這種方法更為安全,,它可以把使用這些環(huán)境變量的權(quán)限控制到用戶級(jí)別,,如果你需要給某個(gè)用戶權(quán)限使用這些環(huán)境變量,你只需要修改其個(gè)人用戶主目錄下的.bashrc文件就可以了,。
(1)用文本編輯器打開用戶目錄下的.bashrc文件
(2)在.bashrc文件末尾加入: set JAVA_HOME=/usr/share/jdk1.5.0_05 export JAVA_HOME set PATH=$JAVA_HOME/bin:$PATH export PATH set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export CLASSPATH
(3)重新登錄
3. 直接在shell下設(shè)置變量 不贊成使用這種方法,,因?yàn)閾Q個(gè)shell,你的設(shè)置就無效了,,因此這種方法僅僅是臨時(shí)使用,,以后要使用的時(shí)候又要重新設(shè)置,比較麻煩,。
只需在shell終端執(zhí)行下列命令: export JAVA_HOME=/usr/share/jdk1.5.0_05 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
在 linux系統(tǒng) 下,,如果你下載并安裝了應(yīng)用程序,很有可能在鍵入它的名稱時(shí)出現(xiàn)“ command not found ”的提示內(nèi)容,。如果每次都到安裝目標(biāo)文件夾內(nèi),,找到可執(zhí)行文件來進(jìn)行操作就太繁瑣了。這涉及到環(huán)境變量 PATH 的設(shè)置問題,,而 PATH 的設(shè)置也是在 linux 下定制環(huán)境變量的一個(gè)組成部分,。本文基于 RedHat 9.0 ,詳細(xì)講解了環(huán)境變量定制的問題,。 2,、變量簡介 Linux 是一個(gè)多用戶的操作系統(tǒng)。每個(gè)用戶登錄系統(tǒng)后,,都會(huì)有一個(gè)專用的運(yùn)行環(huán)境,。通常每個(gè)用戶默認(rèn)的環(huán)境都是相同的,這個(gè)默認(rèn)環(huán)境實(shí)際上就是一組環(huán)境變量的定義,。用戶可以對(duì)自己的運(yùn)行環(huán)境進(jìn)行定制,,其方法就是修改相應(yīng)的系統(tǒng)環(huán)境變量。 3,、常見的環(huán)境變量 $PATH:決定了shell將到哪些目錄中尋找命令或程序 $HOME:當(dāng)前用戶主目錄 $MAIL:是指當(dāng)前用戶的郵件存放目錄,。 $SHELL:是指當(dāng)前用戶用的是哪種Shell。 $HISTSIZE:是指保存歷史命令記錄的條數(shù) $LOGNAME:是指當(dāng)前用戶的登錄名,。 $HOSTNAME:是指主機(jī)的名稱,,許多應(yīng)用程序如果要用到主機(jī)名的話,通常是從這個(gè)環(huán)境變量中來取得的,。 $LANG/LANGUGE:是和語言相關(guān)的環(huán)境變量,,使用多種語言的用戶可以修改此環(huán)境變量。 $PS1:是基本提示符,對(duì)于root用戶是#,,對(duì)于普通用戶是$,,也可以使用一些更復(fù)雜的值。 $PS2:是附屬提示符,,默認(rèn)是“>”,。可以通過修改此環(huán)境變量來修改當(dāng)前的命令符,,比如下列命令會(huì)將提示符修改成字符串“Hello,My NewPrompt :) ”,。 # PS1=" Hello,My NewPrompt :) " $IFS:輸入域分隔符。當(dāng)shell讀取輸入時(shí),,用來分隔單詞的一組字符,,它們通常是空格、制表符和換行符,。 $0:shell腳本的名字,。 例如,在我的Linux系統(tǒng)中: $ echo $0 /bin/bash $#:傳遞給腳本的參數(shù)個(gè)數(shù),。
例如,,在我的Linux系統(tǒng)中: $ echo $$ 31038 #表示當(dāng)前shell進(jìn)程號(hào)為31038 4,、export命令 export命令將作為他參數(shù)的變量導(dǎo)入到子shell中,并使之在子shell中有效,。export命令把自己的參數(shù)創(chuàng)建為一個(gè)環(huán)境變量,,而這個(gè)環(huán)境變量可以被其他腳本和當(dāng)前程序調(diào)用的程序看見。 4.1 實(shí)驗(yàn) 導(dǎo)出變量 ?。?)我們先列出腳本程序export2 #,!/bin/sh echo "$foo" echo "$bar" (2)然后是腳本export1,。在這個(gè)腳本的結(jié)尾,,我們調(diào)用export2: #!/bin/sh foo="The first meta-syntactic variable" export bar="The second meta-syntactic variable" export2 運(yùn)行這個(gè)腳本,將得到如下的輸出: $ export1 #這是個(gè)空格,是因?yàn)樽兞縡oo在export2中不可用,,所以$foo被復(fù)制為空 The second meta-syntactic variable $ 4.2 設(shè)置一個(gè)新的環(huán)境變量WELCOME $ export WELCOME="Hello!"
5,、定制環(huán)境變量 環(huán)境變量是和 Shell 緊密相關(guān)的,用戶登錄系統(tǒng)后就啟動(dòng)了一個(gè) Shell ,。對(duì)于 Linux 來說一般是 bash ,,但也可以重新設(shè)定或切換到其它的 Shell 。根據(jù)發(fā)行版本的情況,, bash 有兩個(gè)基本的系統(tǒng)級(jí)配置文件: /etc/bashrc 和 /etc/profile ,。這些配置文件包含兩組不同的變量: shell 變量和環(huán)境變量,。前者只是在特定的 shell 中固定(如 bash ),后者在不同 shell 中固定,。很明顯,, shell 變量是局部的,而環(huán)境變量是全局的,。環(huán)境變量是通過 Shell 命令來設(shè)置的,,設(shè)置好的環(huán)境變量又可以被所有當(dāng)前用戶所運(yùn)行的程序所使用。對(duì)于 bash 這個(gè) Shell 程序來說,,可以通過變量名來訪問相應(yīng)的環(huán)境變量,,通過 export 來設(shè)置環(huán)境變量。下面通過幾個(gè)實(shí)例來說明,。 5.1 使用命令echo 顯示環(huán)境變量 #本例使用echo顯示常見的變量HOME $ echo $HOME /home/lqm 5.2 設(shè)置一個(gè)新的環(huán)境變量 $ export HELLO=“Hello!” $ echo $HELLO Hello! 5.3 使用 env 命令顯示所有的環(huán)境變量 $ env SSH_AGENT_PID=1875 HOSTNAME=lqm SHELL=/bin/bash TERM=xterm HISTSIZE=1000 …… 5.4 使用set 命令顯示所有本地定義的Shell 變量 $ set BASH=/bin/bash …… 5.5 使用 unset 命令來清除環(huán)境變量 $ export TEST=“test” # 增加一個(gè)環(huán)境變量 TEST $ env | grep TEST # 此命令有輸出,,證明環(huán)境變量 TEST 已經(jīng)存在了 TEST=test $ unset $TEST #刪除環(huán)境變量TEST $ env | grep TEST # 此命令無輸出,證明環(huán)境變量 TEST 已經(jīng)存在了 5.6 使用 readonly 命令設(shè)置只讀變量 如果使用了 readonly 命令的話,,變量就不可以被修改或清除了,。示例如下: $ export TEST="Test" # 增加一個(gè)環(huán)境變量 TEST $ readonly TEST #將環(huán)境變量TEST設(shè)為只讀 $ unset TEST #會(huì)發(fā)現(xiàn)此變量不能被刪除 -bash: unset: TEST: cannot unset: readonly variable $ TEST="New" #會(huì)發(fā)現(xiàn)此變量不能被修改 -bash: TEST: readonly variable 5.7 用C 程序來訪問和設(shè)置環(huán)境變量 對(duì)于 C 程序的用戶來說,可以使用下列三個(gè)函數(shù)來設(shè)置或訪問一個(gè)環(huán)境變量,。 getenv() 訪問一個(gè)環(huán)境變量,。輸入?yún)?shù)是需要訪問的變量名字,返回值是一個(gè)字符串,。如果所訪問的環(huán)境變量不存在,,則會(huì)返回 NULL 。 setenv() 在程序里面設(shè)置某個(gè)環(huán)境變量的函數(shù),。 unsetenv() 清除某個(gè)特定的環(huán)境變量的函數(shù),。 另外,還有一個(gè)指針變量 environ ,,它指向的是包含所有的環(huán)境變量的一個(gè)列表,。下面的程序可以打印出當(dāng)前運(yùn)行環(huán)境里面的所有環(huán)境變量: #include <stdio.h> extern char**environ; int main () { char**var; for (var =environ;*var !=NULL;++var) printf ("%s \n ",*var); return 0; } 5.8 通過修改環(huán)境變量定義文件來修改環(huán)境變量。 需要注意的是,,一般情況下,,這僅僅對(duì)于普通用戶適用,避免修改根用戶的環(huán)境定義文件,,因?yàn)槟菢涌赡軙?huì)造成潛在的危險(xiǎn),。 $vi /etc/bashrc #修改shell變量 $vi /etc/profile #修改環(huán)境變量定義文件 然后編輯你的 PATH 聲明,其格式為: PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N> 你可以自己加上指定的路徑,,中間用冒號(hào)隔開,。環(huán)境變量更改后,在用戶下次登陸時(shí)生效,如果想立刻生效,,則可執(zhí)行下面的語句:$ source .bash_profile 需要注意的是,,最好不要把當(dāng)前路徑 “./” 放到 PATH 里,這樣可能會(huì)受到意想不到的攻擊,。完成后,,可以通過 $ echo $PATH 查看當(dāng)前的搜索路徑。這樣定制后,,就可以避免頻繁的啟動(dòng)位于 shell 搜索的路徑之外的程序了,。 轉(zhuǎn)至:http://kangyang.blog.51cto.com/471772/590840 |
|