linux profile of env
linux profile of env
分類: power 2008-10-24 23:52 4407人閱讀 評論(1) 收藏 舉報 linuxshellpathbashcolors語言Linux是一個多用戶的操作系統。每個用戶登錄系統后,都會有一個專用的運行環境。通常每個用戶默認的環境都是相同的,這個默認環境實際上就是一組環境變量的定義。用戶可以對自己的運行環境進行定制,其方法就是修改相應的系統環境變量。
常見的環境變量
對于PATH和HOME等環境變量大家都不陌生。
PATH能夠指定命令的搜索路徑,那么動態鏈接庫的路徑用什么變量指定呢?或者就是在PATH里面?
比如有一個程序需要/usr/local/lib下面的一個庫文件,應該怎么指定其路徑呢?
經常看到有些變量如LD_LIBRARY_PATH,LIBPATH,CLASSPATH等,他們之間有什么不同和關系?
除此之外,還有下面一些常見環境變量。
◆ HISTSIZE是指保存歷史命令記錄的條數。
◆ LOGNAME是指當前用戶的登錄名。
◆ HOSTNAME是指主機的名稱,許多應用程序如果要用到主機名的話,通常是從這個環境變量中來取得的。
◆ SHELL是指當前用戶用的是哪種Shell。
◆ LANG/LANGUGE是和語言相關的環境變量,使用多種語言的用戶可以修改此環境變量。
◆ MAIL是指當前用戶的郵件存放目錄。
◆ PS1是基本提示符,對于root用戶是#,對于普通用戶是$。PS2是附屬提示符,默認是“>”。可以通過修改此環境變量來修改當前的命令符,比如下列命令會將提示符修改成字符串“Hello,My NewPrompt? ”。
# PS1=" Hello,My NewPrompt? "
Hello,My NewPrompt
除了這些常見的環境變量,許多應用程序在安裝時也會增加一些環境變量,比如使用Java就要設置JAVA_HOME和CLASSPATH等,而安裝五筆輸入法會增加環境變量"XMODIFIERS=@im=fcitx"等。
定制環境變量
環境變量是和Shell緊密相關的,用戶登錄系統后就啟動了一個Shell。對于Linux來說一般是bash,但也可以重新設定或切換到其它的 Shell。環境變量是通過Shell命令來設置的,設置好的環境變量又可以被所有當前用戶所運行的程序所使用。對于bash這個Shell程序來說,可以通過變量名來訪問相應的環境變量,通過export來設置環境變量。下面通過幾個實例來說明。
1. 顯示環境變量HOME
$ echo $HOME
/home/terry
2. 設置一個新的環境變量WELCOME
$ export WELCOME="Hello!"
$ echo $WELCOME
Hello!
3. 使用env命令顯示所有的環境變量
$ env
HOSTNAME=terry.mykms.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. 用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;
}
還可以通過修改一些相關的環境定義文件來修改環境變量,比如對于Red Hat等Linux發行版本,與環境相關的文件有/etc/profile和~/.bashrc等。修改完畢后重新登錄一次就生效了。
?
linux是一個多用戶的操作系統。每個用戶登錄系統后,都會有一個專用的運行環境。通常每個用戶默認的環境都是相同的,這個默認環境實際上就是一組環境變量的定義。用戶可以對自己的運行環境進行定制,其方法就是修改相應的系統環境變量。
什么是環境變量
環境變量是一個具有特定名字的對象,它包含了一個或者多個應用程序所將使用到的信息。許多用戶(特別是那些剛接觸Linux的新手)發現這些變量有些怪異或者難以控制。其實,這是個誤會:通過使用環境變量,你可以很容易的修改一個牽涉到一個或多個應用程序的配置信息。
重要的例子
下表羅列了一些Linux系統使用的變量并說明了它們的用處。在表格后面將列舉一些變量例值。
| 變量 | 說明 |
| PATH | 這個變量包含了一系列由冒號分隔開的目錄,系統就從這些目錄里尋找可執行文件。如果你輸入的可執行文件(例如ls、rc-update或者emerge)不在這些目錄中,系統就無法執行它(除非你輸入這個命令的完整路徑,如/bin/ls)。 |
| ROOTPATH | 這個變量的功能和PATH相同,但它只羅列出超級用戶(root)鍵入命令時所需檢查的目錄。 |
| LDPATH | 這個變量包含了一系列用冒號隔開的目錄,動態鏈接器將在這些目錄里查找庫文件。 |
| MANPATH | 這個變量包含了一系列用冒號隔開的目錄,命令man會在這些目錄里搜索man頁面。 |
| INFODIR | 這個變量包含了一系列用冒號隔開的目錄,命令info將在這些目錄里搜索info頁面。 |
| PAGER | 這個變量包含了瀏覽文件內容的程序的路徑(例如less或者more)。 |
| EDITOR | 這個變量包含了修改文件內容的程序(文件編輯器)的路徑(比如nano或者vi)。 |
| KDEDIRS | 這個變量包含了一系列用冒號隔開的目錄,里面放的是KDE相關的資料。 |
| CONFIG_PROTECT | 這個變量包含了一系列用空格隔開的目錄,它們在更新的時候會被Portage保護起來。 |
| CONFIG_PROTECT_MASK | 這個變量包含了一系列用空格隔開的目錄,它們在更新的時候不會被Portage保護起來。 |
下面你可以找到所有這些變量定義的范例:
| 代碼 1: 定義范例 |
| PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin" ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3" MANPATH="/usr/share/man:/usr/local/share/man" INFODIR="/usr/share/info:/usr/local/share/info" PAGER="/usr/bin/less" EDITOR="/usr/bin/vim" KDEDIRS="/usr" CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf //usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ //usr/share/texmf/tex/platex/config/ /usr/share/config" CONFIG_PROTECT_MASK="/etc/gconf" |
對于bash shell
關于環境變量命令介紹:
1.echo 顯示某個環境變量值 echo $PATH
2.export 設置一個新的環境變量 export HELLO="hello" (可以無引號)
3.env 顯示所有環境變量
4.set 顯示本地定義的shell變量
5.unset 清除環境變量 unset HELLO
6.readonly 設置只讀環境變量 readonly HELLO
常見的環境變量
?? ?? ??? PATH:決定了shell將到哪些目錄中尋找命令或程序
?? ?? ??? HOME:當前用戶主目錄
?? ?? ??? MAIL:是指當前用戶的郵件存放目錄。
?? ?? ??? SHELL:是指當前用戶用的是哪種Shell。
?? ?? ??? HISTSIZE:是指保存歷史命令記錄的條數
?? ?? ??? LOGNAME:是指當前用戶的登錄名。
?? ?? ?? HOSTNAME:是指主機的名稱,許多應用程序如果要用到主機名的話,通常是從這個環境??? ??? ??? 變量中來取得的。
?? ?? ??? LANG/LANGUGE:是和語言相關的環境變量,使用多種語言的用戶可以修改此環境變量。
?? ?? ??? PS1:是基本提示符,對于root用戶是#,對于普通用戶是$。
?? ?? ??? PS2:是附屬提示符,默認是“>”。可以通過修改此環境變量來修改當前的命令符,比??? ??? ??? 如下列命令會將提示符修改成字符串“Hello,My NewPrompt :) ”。
??? ??? ??? ??? # PS1=" Hello,My NewPrompt :) "
使用修改.bashrc文件進行環境變量的編輯,只對當前用戶有用。
?? ?? ???
使用修改 /etc/profile 文件進行環境變量的編輯,是對所有用戶有用。大家一定要注意區別。??
如何設置Shell環境變量?
| Shell | 設置 | 添加 | 去除 | 顯示當前值 | 注解 |
| sh | NAME=value1 export NAME | NAME=value2:$NAME | unset NAME | set(internal)或者env(exported) | 如果需要子進程也看到該環境變量,需要使用export |
| ksh | NAME=value1 export NAME | NAME=value2:$NAME | unset NAME | set(internal)或者env(exported) | 如果需要子進程也看到該環境變量,需要使用export |
| csh | setenv NAME value1 | setenv NAME value2:$NAME | unsetenv NAME | set | 不需要使用export |
| bash | NAME=value1 | NAME=value2:$NAME | unset NAME | set或者env | 如果需要子進程也看到該環境變量,需要使用export |
總結
以上是生活随笔為你收集整理的linux profile of env的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CBLAS的安装与使用
- 下一篇: OpenCV中的凸包