<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 定制Linux操作系統(tǒng)的環(huán)境變量

          定制Linux操作系統(tǒng)的環(huán)境變量

          作者: 時間:2011-02-25 來源:網(wǎng)絡 收藏

          Linux是一個多用戶的操作系統(tǒng)。每個用戶登錄系統(tǒng)后,都會有一個專用的運行環(huán)境。通常每個用戶默認的環(huán)境都是相同的,這個默認環(huán)境實際上就是一組環(huán)境變量的定義。用戶可以對自己的運行環(huán)境進行定制,其方法就是修改相應的系統(tǒng)環(huán)境變量。

          常見的環(huán)境變量

          對于PATH和HOME等環(huán)境變量大家都不陌生。除此之外,還有下面一些常見環(huán)境變量。

          ◆ HISTSIZE是指保存歷史命令記錄的條數(shù)。

          ◆ LOGNAME是指當前用戶的登錄名。

          ◆ HOSTNAME是指主機的名稱,許多應用程序如果要用到主機名的話,通常是從這個環(huán)境變量中來取得的。

          ◆ SHELL是指當前用戶用的是哪種Shell。

          ◆ LANG/LANGUGE是和語言相關的環(huán)境變量,使用多種語言的用戶可以修改此環(huán)境變量。

          ◆ MAIL是指當前用戶的郵件存放目錄。

          ◆ PS1是基本提示符,對于root用戶是#,對于普通用戶是$。PS2是附屬提示符,默認是“>”。可以通過修改此環(huán)境變量來修改當前的命令符,比如下列命令會將提示符修改成字符串“Hello,My NewPrompt :) ”。

          # PS1=" Hello,My NewPrompt :) "

          Hello,My NewPrompt :)

          除了這些常見的環(huán)境變量,許多應用程序在安裝時也會增加一些環(huán)境變量,比如使用Java就要設置JAVA_HOME和CLASSPATH等,而安裝五筆輸入法會增加環(huán)境變量"XMODIFIERS=@im=fcitx"等。

          定制環(huán)境變量

          環(huán)境變量是和Shell緊密相關的,用戶登錄系統(tǒng)后就啟動了一個Shell。對于Linux來說一般是bash,但也可以重新設定或切換到其它的 Shell。環(huán)境變量是通過Shell命令來設置的,設置好的環(huán)境變量又可以被所有當前用戶所運行的程序所使用。對于bash這個Shell程序來說,可以通過變量名來訪問相應的環(huán)境變量,通過export來設置環(huán)境變量。下面通過幾個實例來說明。

          1. 顯示環(huán)境變量HOME

          $ echo $HOME

          /home/terry

          2. 設置一個新的環(huán)境變量WELCOME

          $ export WELCOME="Hello!"

          $ echo $WELCOME

          Hello!

          3. 使用env命令顯示所有的環(huán)境變量

          $ 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命令來清除環(huán)境變量

          set可以設置某個環(huán)境變量的值。清除環(huán)境變量的值用unset命令。如果未指定值,則該變量值將被設為NULL。示例如下:

          $ export TEST="Test..." #增加一個環(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)存在了

          6. 使用readonly命令設置只讀變量

          如果使用了readonly命令的話,變量就不可以被修改或清除了。示例如下:

          $ export TEST="Test..." #增加一個環(huán)境變量TEST

          $ readonly TEST #將環(huán)境變量TEST設為只讀

          $ unset TEST #會發(fā)現(xiàn)此變量不能被刪除

          -bash: unset: TEST: cannot unset: readonly variable

          $ TEST="New" #會發(fā)現(xiàn)此也變量不能被修改

          -bash: TEST: readonly variable

          7. 用C程序來訪問和設置環(huán)境變量

          對于C程序的用戶來說,可以使用下列三個函數(shù)來設置或訪問一個環(huán)境變量。

          ◆ getenv()訪問一個環(huán)境變量。輸入?yún)?shù)是需要訪問的變量名字,返回值是一個字符串。如果所訪問的環(huán)境變量不存在,則會返回NULL。

          ◆ setenv()在程序里面設置某個環(huán)境變量的函數(shù)。

          ◆ unsetenv()清除某個特定的環(huán)境變量的函數(shù)。

          另外,還有一個指針變量environ,它指向的是包含所有的環(huán)境變量的一個列表。下面的程序可以打印出當前運行環(huán)境里面的所有環(huán)境變量:

          #include extern char**environ;int main (){char**var;for (var =environ;*var !=NULL;  var)printf ("%s n ",*var);return 0;}

          還可以通過修改一些相關的環(huán)境定義文件來修改環(huán)境變量,比如對于Red Hat等Linux發(fā)行版本,與環(huán)境相關的文件有/etc/profile和~/.bashrc等。修改完畢后重新登錄一次就生效了。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關文章:linux教程




          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();