1. 程式人生 > >在Linux裡設定使用者環境變數的方法

在Linux裡設定使用者環境變數的方法

建立交叉編譯環境是嵌入式開發的一個重要的步驟,安裝交叉編譯環境就是為交叉編譯工具設定環境變數。下面就是安裝交叉編譯環境的一個例子:首先:安裝工作目錄。把解壓後的交叉編譯工具鏈arm-Linux-gcc 3.4.1版本複製到/usr/local/arm/3.4.1/其實:設定環境變數。#gedit /root/.bashrc編輯/root/.bashrc 檔案,在最後一行export PATH=$PATH:/usr/local/arm/3.4.1/bin最後:重新登入 Redhat 系統(不必重啟機器,開始->logout 即可),使以上設定生效,在命令行輸入 arm-linux-gcc –v 檢查是否成功建立交叉編譯環境。

分析/root/bashrc檔案的內容:.bashrc:······if [ -f /etc/bashrc ]; then      . /etc/bashrcfiexport PATH=$PATH:/usr/local/arm/3.4.1/bin前面三行的意思是“如果/etc/bashrc這個檔案存在,那麼就執行它”,最後一行是我自己加的,用於修改PATH變數,這裡是設定環境變數所起的作用就是當執行arm-linux-       ,就會執行export PATH=$PATH:/usr/local/arm/3.4.1/bin中對應的命令。而且每次登入時,環境變數PATH都會自動修改為我需要的值.提問1:在Linux作業系統中設定環境變數用export命令:如export HOME=/home j以後指令碼中HOME就代表/home .shell中的arm-linux-gcc命令怎麼和/usr/local/arm/3.4.1/bin中的arm-linux-gcc相關聯?在語句中不能直接看出他們的關聯?
回答:在語句中的確不像例子中那樣可以直接看出HOME與/home 的相關性。那是因為環境變數PATH矇蔽了你的雙眼。用$echo $PATH檢視環境變數PATH的值(env檢視全部環境變數值)

這裡補充一下小知識:通過以下內容說明特殊符號的用法。export A=/q/jing:aaa/cc/ldexport B=.:/liheng/wangexport A=/cd/cdr:$A大家注意紅色的符號:: 表示並列含義,例如A變數值有多個,用:符號進行分離。. 表示你操作的當前目錄。例如pap命令會查詢B環境變數。在/home鍵入pap命令,系統首先在/home目錄下(即當前路徑)查詢關於 B 的內容,如果沒有在/liheng/wang目錄下查詢關於B的內容。

$ 表示該變數本次定義之前的值,例如$A代表/q/jing:aaa/cc/ld。也就是說A=/cd/cdr:/q/jing:aaa/cc/ldPATH環境變數作用是決定了shell將到哪些目錄中尋找命令或程式。arm-linu-gcc屬於命令。export PATH=$PATH:/usr/local/arm/3.4.1/bin也就不難理解。意思是讓PATH以前的值($PATH)和新設的環境變數值(/usr/local/arm/3.4.1/bin)並列,通過符號進行分離。因為arm-Linux-gcc只有在/usr/local/arm/3.4.1/bin下才存在,所以在執行時就能通過符號分離出arm-linux-gcc的路徑為/usr/local/arm/3.4.1/bin提問2:為什麼是在/root/bashrc檔案中設定?不是在/etc/bashrc或者其他檔案中進行設定?回答:linux給大家提供了自動設定環境變數的方法,那就是修改 .bashrc 檔案。一般說來,有兩個檔案可以提供這種“進入系統時自動設定”的功能,一個是 /etc/bashrc,另一個是 ~/.bashrc。其中/etc/bashrc是被每個使用者執行的,而~/.bashrc只被當前使用者執行。所以/etc/bashrc只有root使用者能更改,而~/.bashrc是各個使用者私有的檔案。 "~"指的是使用者的home目錄。我自己用root帳號登入的,所以對我來所~/bashrc就是/root/bashrc。     這樣,各個使用者有自己獨立的".bashrc"檔案,可以根據需要自行更改,而不會互相干擾。 /etc/bashrc檔案則是共享的,整個Linux中只有一份。一般來說,使用者的"~/.bashrc"開頭都會呼叫/etc/bashrc,因此更改/etc/bashrc會影響到所有使用者,這個檔案一般是root使用者管理的。提問3:Linux系統中/etc/profile與/etc/bashfile檔案作用的區別?(1)/etc/profile:此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行. 並從/etc/profile.d目錄的配置檔案中搜集shell的設定。他是為使用者定製系統定製環境變數。(2)/etc/bashrc: 是為每一個bash shell的使用者定製環境變數,當bash shell被開啟時,該檔案被讀取。~/bashrc是為某個bash shell使用者定製環境變數

=======================================================================================

環境變數就是系統或軟體設定的一些引數,使用者環境變數就是使用者登入系統後,都有自已專用的執行環境。在Windows系統中使用者環境變數儲存在使用者家目錄,Linux也是同樣的。本文主要是講解Linux常用的環境變數和環境變數的設定。

一、環境變數相關操作(只應用於當前,要永久儲存需要寫入到相關檔案。)
#echo $PATH
顯示PATH設定。
#env
顯示當前使用者變數。
#set
顯示當前Shell變數。
#export
顯示當前匯出成使用者變數的shell變數。
#a=abc
定義一個Shell變數。
#export a=abc
定義一個Shell變數,並匯出成使用者變數。
#unset a
清除環境變數
#readonly a
設定只讀環境變數

二、常見的環境變數
PATH      決定了shell將到哪些目錄中尋找命令或程式
HOME       當前使用者主目錄
HISTSIZE     歷史記錄數
LOGNAME     當前使用者的登入名
HOSTNAME   指主機的名稱
SHELL      前使用者Shell型別
LANGUGE     語言相關的環境變數,多語言可以修改此環境變數
MAIL      當前使用者的郵件存放目錄
PS1       基本提示符,對於root使用者是#,對於普通使用者是$
PS2       附屬提示符,預設是“>”

三、Linux環境變數設定檔案
/etc/profile
全域性使用者,應用於所有的Shell。
/$HOME/.profile
當前使用者,應用於所有的Shell。
/etc/bash_bashrc
全域性使用者,應用於Bash Shell。
~/.bashrc
區域性當前,應用於Bash Sell。

四、其它
在使用者目錄下用ls -a,能看見很多“.”開頭的隱藏檔案。如果不是使用者建立的,那麼這些檔案都是環境設定檔案。有其它Shell的設定檔案,也有軟體設定的檔案。比如:.lftp,它就是lftp軟體的設定檔案。如果安裝了x-window的話,選單和桌面設定都在.local裡面。這些大家用久了自然就知道了。

export set env區別baidu一下就知道了。

補充:開啟啟動Xwindow,有些Linux發行版不會載入SHELL環境變數,因為Xwindow有自已的會話設定。例如gnome,有~/.gnomerc 或 /etc/X11/Xsession.d/55gnome-session_gnomerc。

//=============================================================

在 linux 裡設定環境變數的方法 ( export PATH )

如果使用原始碼包安裝的軟體,在安裝完成後一般情況下要設定該軟體命令執行的路徑,那就是 PATH 變數。如何來設定 PAHT變數呢?我們又三種方法實現
例如:壓力測試工具sysbench的命令目錄為:/usr/local/sysbench/bin,想要將sysbench工具加入到系統環境變數裡,使在root使用者下,可以直接執行sysbench命令。

1.直接使用 export 命令

# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

# export PATH=$PATH:/usr/local/sysbench/bin

# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sysbench/bin

注意: 直接使用 export 設定的變數都是臨時變數,也就是說退出當前的 shell ,為該變數定義的值便不會生效了。如何能讓我們定義的變數永久生效呢?那就看我們的第二種定義的方式


2. 修改 /etc/profile
# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

# vi /etc/profile
export PATH=$PATH:/usr/local/sysbench/bin # 在配置檔案中加入此行配置
需要注意的是:修改完這個檔案必須要使用 以下命令在不用重啟系統的情況下使修改的內容生效
# source /etc/profile
或者是:
# . /etc/profile

# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sysbench/bin
# 配置已經生效

注意:修改 /etc/profile下雖然可以使環境變數永久生效,但在系統重啟時,可能不再讀取/etc/profile檔案中的內容,需要在執行 "source /etc/profile"之後才能使環境變數生效;為了避免重啟後環境變數不生效的問題,也可以在/etc/profile.d/目錄下簡歷一個path.sh的檔案,將export命令寫入其中,這樣每次系統重啟時,都會自動讀取檔案內容,使環境變數生效。


3. 修改 .bashrc 檔案是在當前使用者 shell 下生效
# vi /root/.bashrc 在裡面加入:
export PATH=$PATH:/usr/local/mysql/bin
修改這個檔案之後同樣也需要使用 source 或者是 . 使配置檔案生效。
再來使用 echo $PATH看下變數是否生效

# echo $PATH

以上是將一個工具命令加入到root使用者下的環境變數中,對於非root使用者,一般採用第二種方法,在進行 su - 命令切換時,自動讀取 ~/bash_profile檔案中的環境變數內容,就可以直接使用相關工具的命令了。