linux中的環境變數
① linux中環境變數配置文件詳解
環境變數是和Shell緊密相關的,用戶登錄系統後就啟動了一個Shell。對於Linux來說一般是bash,但也可以重新設定或切換到其它的 Shell。對於UNIX,可能是CShelll。環境變數是通過Shell命令來設置的,設置好的環境變數又可以被所有當前用戶所運行的程序所使用。對於bash這個Shell程序來說,可以通過變數名來訪問相應的環境變數,通過export來設置環境變數。下面通過幾個實例來說明。
一.系統級:
1)etc/profile:此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行.並從/etc/profile.d目錄的配置文件中搜集shell的設置.
註:在這里我們設定是為所有用戶可使用的全局變數。
2)/etc/bashrc:為每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取.
二.用戶級(這些文件處於家目錄下):
1)~/.bash_profile:每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,他設置一些環境變數,執行用戶的.bashrc文件.
註:~在LINUX下面是代表HOME這個變數的。
另外在不同的LINUX操作系統下,這個文件可能是不同的,可能是~/.bash_profile; ~/.bash_login或 ~/.profile其中的一種或幾種,如果存在幾種的話,那麼執行的順序便是:~/.bash_profile、 ~/.bash_login、 ~/.profile。比如我用的是Ubuntu,我的用戶文件夾下默認的就只有~/.profile文件。
2)~/.bashrc:該文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該文件被讀取.
(註:這個文件是 .開頭的,所以在文件夾中被隱藏了)
那麼我們如何添加自己定義的環境變數呢?
用記事本打開這個文件,然後在裡面最後寫上:
xiaokang=kangkang
然後保存,這樣每次打開一個新的terminal的時候,我們這個變數就生效了。記住,如果你已經打開一個terminal,然後你修改了這個文件,那麼在這個terminal下是不會生效的。一般情況用戶最好在這里進行修改,但是有時候會覆蓋父級的變數,比如PATH是ROOT設定的,但是如果你在這個文件裡面寫了PATH=xx,那麼將來所有的PATH都成了xx了,所以我們應該在這個文件中寫為:
PATH=$PATH:xx
這樣就把原來的和你自己的一起加上了。而且注意在LINUX系統下用:分割表示並列,而不是windo的;
3和4都是在用戶目錄下的,他們唯一的不同是: .bash_profile只能在登錄的時候啟動一次。在我的Ubuntu裡面這個3文件似乎沒有。
3)~/.bash_logout:當每次退出系統(退出bash shell)時,執行該文件.
另外,/etc/profile中設定的變數(全局)的可以作用於任何用戶,而~/.bashrc等中設定的變數(局部)只能繼承/etc/profile中的變數,他們是/"父子/"關系.
~/.bash_profile 是互動式、login 方式進入 bash 運行的
~/.bashrc 是互動式 non-login 方式進入 bash 運行的
通常二者設置大致相同,所以通常前者會調用後者。
通過上面的文件介紹,就能明白我們需要設置環境變數的時候,需要修改什麼文件,要想對所有的用戶生效,那就需要設置系統級的環境變數。反之,需要修改用戶級的文件(最好是修改.profile文件,理由上面已經講了)。
另外,總結一下他們的執行方式:
當你登錄並且登錄shell是bash時,bash首先執行/etc/profile文件中的命令(如果該文件存在),然後它順序尋找~ /.bash_profile,~/.bash_login或~/.profile文件,並執行找到的第一個可讀文件中的命令.當登錄bash退出時,它 將執行~/.bash_logout文件中的命令.
當啟動一個交互的bash時,它將執行~/.bashrc文件中的命令(如果該文件存在並且可讀).當非交互地啟動以運行一個shell腳本時,bash將查找bash_env環境變數,確定執行文件的名稱.
② linux環境變數怎麼配置
Linux環境變數配置相關命令及常式:
1. 顯示環境變數HOME
$ echo $HOME
/home/redbooks
2. 設置一個新的環境變數hello
$ export HELLO="Hello!"
$ echo $HELLO
Hello!
3. 使用env命令顯示所有的環境變數
$ env
HOSTNAME=redbooks.safe.org
PVM_RSH=/usr/bin/rsh
Shell=/bin/bash
TERM=xterm
HISTSIZE=1000
...
4. 使用set命令顯示所有本地定義的Shell變數
$ set
BASH=/bin/bash
BASH_VERSINFO=([0]="2"[1]="05b"[2]="0"[3]="1"[4]="release"[5]="i386-redhat-linux-gnu")
BASH_VERSION='2.05b.0(1)-release'
_COLORS=/etc/DIR_COLORS.xterm
COLUMNS=80
DIRSTACK=()
DISPLAY=:0.0
...
5. 使用unset命令來清除環境變數
set可以設置某個環境變數的值。清除環境變數的值用unset命令。如果未指定值,則該變數值將被設為NULL。
示例如下:
$ export TEST="Test..." #增加一個環境變數TEST
$ env|grep TEST #此命令有輸入,證明環境變數TEST已經存在了
TEST=Test...
$ unset $TEST #刪除環境變數TEST
$ env|grep TEST #此命令沒有輸出,證明環境變數TEST已經存在了
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
7. 環境變數的設置位於/etc/profile文件
如果需要增加新的環境變數可以添加以下行:
export path=$path:/path1:/path2:/pathN
8. Linux的變數種類:
按變數的生存周期來劃分,Linux變數可分為兩類:
永久的:需要修改配置文件,變數永久生效。
臨時的:使用export命令聲明即可,變數在關閉shell時失效。
9. 設置變數的三種方法:
在/etc/profile文件中添加變數【對所有用戶生效(永久的)】
用VI在文件/etc/profile文件中增加變數,該變數將會對Linux下所有用戶有效,並且是「永久的」。
例如:編輯/etc/profile文件,添加CLASSPATH變數
# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
註:修改文件後要想馬上生效還要運行# source /etc/profile,不然只能在下次重進此用戶時生效。
在用戶目錄下的.bash_profile文件中增加變數【對單一用戶生效(永久的)】
用VI在用戶目錄下的.bash_profile文件中增加變數,改變數僅會對當前用戶有效,並且是「永久的」。
例如:編輯guok用戶目錄(/home/guok)下的.bash_profile
$ vi /home/guok/.bash_profile
添加如下內容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
註:修改文件後要想馬上生效還要運行$ source /home/guok/.bash_profile,不然只能在下次重進此用戶時生效。
直接運行export命令定義變數【只對當前shell(BASH)有效(臨時的)】
在shell的命令行下直接使用[export 變數名=變數值]定義變數,該變數只在當前的shell(BASH)或其子shell(BASH)下是有效的,shell關閉了,變數也就失效了,再打開新shell時就沒有這個變數,需要使用的話還需要重新定義。
10. 環境變數的查看:
使用echo命令查看單個環境變數。例如:
echo $PATH
使用env查看所有環境變數。例如:
env
使用set查看所有本地定義的環境變數。
unset可以刪除指定的環境變數。
11. 常用的環境變數:
PATH 決定了shell將到哪些目錄中尋找命令或程序
HOME 當前用戶主目錄
HISTSIZE 歷史記錄數
LOGNAME 當前用戶的登錄名
HOSTNAME 指主機的名稱
SHELL 當前用戶Shell類型
LANGE 語言相關的環境變數,多語言可以修改此環境變數
MAIL 當前用戶的郵件存放目錄
PS1 基本提示符,對於root用戶是#,對於普通用戶是$
③ Linux環境變數設置
在Linux環境中,設置環境變數可以通過修改以下幾個文件來實現,每個文件的作用范圍和生效時機有所不同:
/etc/profile
- 作用:為系統的每個用戶設置環境信息。
- 生效時機:當用戶第一次登錄時執行。
- 修改生效:修改後需要重啟才能生效,修改對每個用戶都生效。
/etc/bashrc
- 作用:為每一個運行bash shell的用戶執行此文件。
- 生效時機:當bash shell被打開時讀取。
- 修改生效:修改後重新打開一個bash即可生效,無需重啟。修改對所有使用bash的用戶都生效。
~/.bash_profile
- 作用:每個用戶專用的shell信息文件。
- 生效時機:當用戶登錄時執行,僅執行一次。
- 修改生效:修改後需要重啟才能生效。修改只對當前用戶生效。
~/.bashrc
- 作用:包含專用於用戶的bash shell信息。
- 生效時機:當登錄時以及每次打開新的shell時讀取。
- 修改生效:修改後重新打開一個bash即可生效,無需重啟。修改只對當前用戶新打開的bash生效。
重點總結: 如果需要對所有用戶生效,可以修改/etc/profile或/etc/bashrc。 如果只需要對當前用戶生效,可以修改~/.bash_profile或~/.bashrc。 /etc/profile和~/.bash_profile修改後需要重啟或重新登錄才能生效。 /etc/bashrc和~/.bashrc修改後重新打開一個bash即可生效。
④ linux設置變數
在Linux中設置變數的方法主要有以下幾種:
設置環境變數:
- 使用export命令來設置。例如:export MY_VARIABLE=value。
- 環境變數在系統范圍內有效,可以在所有進程中訪問。
設置局部變數:
- 使用賦值運算符來設置。例如:my_variable=value。
- 局部變數的作用域僅限於當前腳本或命令行上下文。
使用declare命令設置變數:
- declare命令可用於聲明變數和設置其屬性,如類型、可見性等。
- 例如,聲明一個只讀變數:declare r my_variable="value"。
- 你可以使用相同的方式設置其他屬性,如默認值、作用域等。
注意事項: 具體的設置方法可能因Linux發行版和shell環境而有所不同。 上述方法適用於大多數常見的Linux發行版和默認的shell環境。 如果你使用的是其他特定的shell或發行版,請參考相應的文檔或手冊以獲取准確的方法。