1.動態庫路徑的設定Linux下調用動態庫和windows不一樣.linux 可執行程式是靠設定檔去讀取路徑的,因此有些時候需要設定路徑具體操作如下export LD_LIBRARY_PATH=/home/.....(動態庫的目錄)不過這種設定方法只是在當前的session中有效你可以修改設定檔實現任何session都有效2.環境變數的設定一般來說,配置交叉編譯工具鏈的時候需要指定編譯工具的路徑,此時就需要設定環境變數。例如我的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"讓環境變數立即生效需要執行如下命令:#source /etc/profile3. 修改.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。 相關的環境變數生效後,就不必老跑到軟體的可執行檔目錄裡去操作了。from:http://blog.csdn.net/kpgood/archive/2009/03/07/3965446.aspx使用linux的朋友越來越多了,在linux下做開發首先就是需要配置環境變數,下面以配置java環境變數為例介紹三種配置環境變數的方法。 1.修改/etc/profile檔案如果你的電腦僅僅作為開發使用時推薦使用這種方法,因為所有使用者的shell都有權使用這些環境變數,可能會給系統帶來安全性問題。 (1)用文字編輯器開啟/etc/profile (2)在profile檔案末尾加入:JAVA_HOME=/usr/share/jdk1.5.0_05PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOMEexport PATHexport CLASSPATH (3)重新登入 註解:a. 你要將 /usr/share/jdk1.5.0_05jdk 改為你的jdk安裝目錄 b. linux下用冒號“:”來分隔路徑 c. $PATH / $CLASSPATH / $JAVA_HOME 是用來引用原來的環境變數的值,在設定環境變數時特別要注意不能把原來的值給覆蓋掉了,這是一種常見的錯誤。 d. CLASSPATH中目前的目錄“.”不能丟,把目前的目錄丟掉也是常見的錯誤。 e. export是把這三個變數匯出為全域變數。 f. 大小寫必須嚴格區分。 2. 修改.bashrc檔案 這種方法更為安全,它可以把使用這些環境變數的許可權控制到使用者層級,如果你需要給某個使用者權限使用這些環境變數,你只需要修改其個人使用者主目錄下的.bashrc檔案就可以了。 (1)用文字編輯器開啟使用者目錄下的.bashrc檔案 (2)在.bashrc檔案末尾加入: set JAVA_HOME=/usr/share/jdk1.5.0_05export JAVA_HOMEset PATH=$JAVA_HOME/bin:$PATHexport PATHset CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport CLASSPATH (3)重新登入 3. 直接在shell下設定變數不贊成使用這種方法,因為換個shell,你的設定就無效了,因此這種方法僅僅是臨時使用,以後要使用的時候又要重新設定,比較麻煩。 只需在shell終端執行下列命令:export JAVA_HOME=/usr/share/jdk1.5.0_05export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 在 linux系統 下,如果你下載並安裝了應用程式,很有可能在鍵入它的名稱時出現“ command not found ”的提示內容。如果每次都到安裝目標檔案夾內,找到可執行檔來進行操作就太繁瑣了。這涉及到環境變數 PATH 的設定問題,而 PATH 的設定也是在 linux 下定製環境變數的一個組成部分。本文基於 RedHat 9.0 ,詳細講解了環境變數定製的問題。2、變數簡介 Linux 是一個多使用者的作業系統。每個使用者登入系統後,都會有一個專用的運行環境。通常每個使用者預設的環境都是相同的,這個預設環境實際上就是一組環境變數的定義。使用者可以對自己的運行環境進行定製,其方法就是修改相應的系統內容變數。3、常見的環境變數 $PATH:決定了shell將到哪些目錄中尋找命令或程式 $HOME:目前使用者主目錄 $MAIL:是指目前使用者的郵件存放目錄。 $SHELL:是指目前使用者用的是哪種Shell。 $HISTSIZE:是指儲存曆史命令記錄的條數 $LOGNAME:是指目前使用者的登入名稱。 $HOSTNAME:是指主機的名稱,許多應用程式如果要用到主機名稱的話,通常是從這個環境變數中來取得的。 $LANG/LANGUGE:是和語言相關的環境變數,使用多種語言的使用者可以修改此環境變數。 $PS1:是基本提示符,對於root使用者是#,對於普通使用者是$,也可以使用一些更複雜的值。 $PS2:是附屬提示符,預設是“>”。可以通過修改此環境變數來修改當前的命令符,比如下列命令會將提示符修改成字串“Hello,My NewPrompt :) ”。 # PS1=" Hello,My NewPrompt :) " $IFS:輸入欄位分隔字元。當shell讀取輸入時,用來分隔單詞的一組字元,它們通常是空格、定位字元和分行符號。 $0:shell指令碼的名字。 例如,在我的Linux系統中: $ echo $0 /bin/bash $#:傳遞給指令碼的參數個數。 $$:shell指令碼的進程號,指令碼程式通常會用它產生一個唯一的臨時檔案,如/tmp/tmfile_$$ 例如,在我的Linux系統中: $ echo $$ 31038 #表示當前shell進程號為31038 4、export命令 export命令將作為他參數的變數匯入到子shell中,並使之在子shell中有效。export命令把自己的參數建立為一個環境變數,而這個環境變數可以被其他指令碼和當前程式調用的程式看見。 4.1 實驗 匯出變數 (1)我們先列出指令碼程式export2 #。/bin/sh echo "$foo" echo "$bar" (2)然後是指令碼export1。在這個指令碼的結尾,我們調用export2: #!/bin/sh foo="The first meta-syntactic variable" export bar="The second meta-syntactic variable" export2 運行這個指令碼,將得到如下的輸出: $ export1 #這是個空格,是因為變數foo在export2中不可用,所以$foo被複製為空白 The second meta-syntactic variable $ 4.2 設定一個新的環境變數WELCOME $ export WELCOME="Hello!" $ echo $WELCOME Hello! 5、定製環境變數 環境變數是和 Shell 緊密相關的,使用者登入系統後就啟動了一個 Shell 。對於 Linux 來說一般是 bash ,但也可以重新設定或切換到其它的 Shell 。根據發行版本的情況, bash 有兩個基本的系統級設定檔: /etc/bashrc 和 /etc/profile 。這些設定檔包含兩組不同的變數: shell 變數和環境變數。前者只是在特定的 shell 中固定(如 bash ),後者在不同 shell 中固定。很明顯, shell 變數是局部的,而環境變數是全域的。環境變數是通過 Shell 命令來設定的,設定好的環境變數又可以被所有目前使用者所啟動並執行程式所使用。對於 bash 這個 Shell 程式來說,可以通過變數名來訪問相應的環境變數,通過 export 來設定環境變數。下面通過幾個執行個體來說明。 5.1 使用命令echo 顯示環境變數 #本例使用echo顯示常見的變數HOME $ echo $HOME /home/lqm 5.2 設定一個新的環境變數 $ export HELLO=“Hello!” $ echo $HELLO Hello! 5.3 使用 env 命令顯示所有的環境變數 $ 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 命令來清除環境變數 $ export TEST=“test” # 增加一個環境變數 TEST $ env | grep TEST # 此命令有輸出,證明環境變數 TEST 已經存在了 TEST=test $ unset $TEST #刪除環境變數TEST $ env | grep TEST # 此命令無輸出,證明環境變數 TEST 已經存在了 5.6 使用 readonly 命令設定唯讀變數 如果使用了 readonly 命令的話,變數就不可以被修改或清除了。樣本如下: $ export TEST="Test" # 增加一個環境變數 TEST $ readonly TEST #將環境變數TEST設為唯讀 $ unset TEST #會發現此變數不能被刪除 -bash: unset: TEST: cannot unset: readonly variable $ TEST="New" #會發現此變數不能被修改 -bash: TEST: readonly variable 5.7 用C 程式來訪問和設定環境變數 對於 C 程式的使用者來說,可以使用下列三個函數來設定或訪問一個環境變數。 getenv() 訪問一個環境變數。輸入參數是需要訪問的變數名字,傳回值是一個字串。如果所訪問的環境變數不存在,則會返回 NULL 。 setenv() 在程式裡面設定某個環境變數的函數。 unsetenv() 清除某個特定的環境變數的函數。 另外,還有一個指標變數 environ ,它指向的是包含所有的環境變數的一個列表。下面的程式可以列印出當前運行環境裡面的所有環境變數: #include <stdio.h> extern char**environ; int main () { char**var; for (var =environ;*var !=NULL;++var) printf ("%s \n ",*var); return 0; } 5.8 通過修改環境變數定義檔案來修改環境變數。 需要注意的是,一般情況下,這僅僅對於普通使用者適用,避免修改根使用者的環境定義檔案,因為那樣可能會造成潛在的危險。 $vi /etc/bashrc #修改shell變數 $vi /etc/profile #修改環境變數定義檔案 然後編輯你的 PATH 聲明,其格式為: PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N> 你可以自己加上指定的路徑,中間用冒號隔開。環境變數更改後,在使用者下次登陸時生效,如果想立刻生效,則可執行下面的語句:$ source .bash_profile 需要注意的是,最好不要把當前路徑 “./” 放到 PATH 裡,這樣可能會受到意想不到的攻擊。完成後,可以通過 $ echo $PATH 查看當前的搜尋路徑。這樣定製後,就可以避免頻繁的啟動位於 shell 搜尋的路徑之外的程式了。
http://james23dier.iteye.com/blog/763274