Linux命令行與Shell-----環(huán)境變量

  1. 全局環(huán)境變量
    全局環(huán)境變量對(duì)于shell會(huì)話和所有生成的子shell都是可見(jiàn)的盒让。 局部變量則只對(duì)創(chuàng)建它們的shell可見(jiàn)唬滑。
    要查看全局變量澈圈, 可以使用 envprintenv 命令它掂。

    • 要顯示個(gè)別環(huán)境變量的值巴帮, 可以使用printenv 命令溯泣, 但是不要用env 命令。

    • 也可以使用echo 顯示變量的值榕茧。 在這種情況下引用某個(gè)環(huán)境變量的時(shí)候垃沦, 必須在變量前面加上一個(gè)美元符( $ )

      echo $HOME
      ls $HOME
      
  2. 局部環(huán)境變量
    局部環(huán)境變量只能在定義它們的進(jìn)程中可見(jiàn)。

    • 在Linux系統(tǒng)并沒(méi)有一個(gè)只顯示局部環(huán)境變量的命令用押。
    • set 命令會(huì)顯示為某個(gè)特定進(jìn)程設(shè)置的所有環(huán)境變量肢簿, 包括局部變量、 全局變量以及用戶定義變量蜻拨。
  3. 設(shè)置用戶定義變量

    1. 設(shè)置局部用戶定義變量

       my_variable=Hello
       echo $my_variable
      
       #設(shè)置了局部環(huán)境變量后池充, 就能在shell進(jìn)程的任何地方使用它了。 但是缎讼, 如果生成了另外一個(gè)shell收夸, 它在子shell中就不可用。
       bash
       echo $my_variable    #空
       exit
       echo $my_variable    #Hello
      
    2. 設(shè)置全局環(huán)境變量
      在設(shè)定全局環(huán)境變量的進(jìn)程所創(chuàng)建的子進(jìn)程中血崭, 該變量都是可見(jiàn)的卧惜。 創(chuàng)建全局環(huán)境變量的方法是先創(chuàng)建一個(gè)局部環(huán)境變量, 然后再把它導(dǎo)出到全局環(huán)境中夹纫。
      這個(gè)過(guò)程通過(guò)export 命令來(lái)完成序苏, 變量名前面不需要加$ 。

       my_variable="I am Global now"
      export my_variable
      echo $my_variable    # I am Global now
      bash
      echo $my_variable    # I am Global now
      # 修改子shell中全局環(huán)境變量并不會(huì)影響到父shell中該變量的值捷凄。
      bash
      my_variable="Null"
      echo $my_variable    # Null
      exit
      echo $my_variable    # I am Global now
      # 刪除環(huán)境變量
      unset my_variable
      # 在處理全局環(huán)境變量時(shí)忱详, 事情就有點(diǎn)棘手了。 如果你是在子進(jìn)程中刪除了一個(gè)全局環(huán)境變量跺涤, 這只對(duì)子進(jìn)程有效匈睁。 該全局環(huán)境變量在父進(jìn)程中依然可用。
      my_variable="I am Global now"
      bash
      unset my_variable
      exit
      echo $my_variable    # I am Global now
      
  4. 設(shè)置PATH 環(huán)境變量

     PATH=$PATH:/usr/local/nginx/sbin
    
  5. 定位系統(tǒng)環(huán)境變量

    • 在你登入Linux系統(tǒng)啟動(dòng)一個(gè)bash shell時(shí)桶错, 默認(rèn)情況下bash會(huì)在幾個(gè)文件中查找命令航唆。 這些文件叫作啟動(dòng)文件 或環(huán)境文件 。
    • 啟動(dòng)bash shell有3種方式:
      1. 登錄時(shí)作為默認(rèn)登錄shell
      2. 作為非登錄shell的交互式shell
      3. 作為運(yùn)行腳本的非交互shell
    • 當(dāng)你登錄Linux系統(tǒng)時(shí)院刁, bash shell會(huì)作為登錄shell啟動(dòng)糯钙。 登錄shell會(huì)從5個(gè)不同的啟動(dòng)文件里讀取命令:
      1. /etc/profile
        /etc/profile文件是bash shell默認(rèn)的的主啟動(dòng)文件。 只要你登錄了Linux系統(tǒng)退腥, bash就會(huì)執(zhí)行 /etc/profile 啟動(dòng)文件中的命令任岸。

        這兩個(gè)發(fā)行版(Ubuntu和CentOS)的/etc/profile文件都用到了同一個(gè)特性: for 語(yǔ)句。 它用來(lái)迭代/etc/profile.d目錄下的所有文件狡刘。 這為L(zhǎng)inux系統(tǒng)提供了一個(gè)放置特定應(yīng)用程序啟動(dòng)文件的地方享潜, 當(dāng)用戶登錄時(shí), shell會(huì)執(zhí)行這些文件嗅蔬。

      2. $HOME目錄下的啟動(dòng)文件
        剩下的啟動(dòng)文件都起著同一個(gè)作用: 提供一個(gè)用戶專屬的啟動(dòng)文件來(lái)定義該用戶所用到的環(huán)境變量剑按。 大多數(shù)Linux發(fā)行版只用這四個(gè)啟動(dòng)文件中的一到兩個(gè):

        • $HOME/.bash_profile
        • $HOME/.bashrc
        • $HOME/.bash_login
        • $HOME/.profile
  6. 環(huán)境變量持久化

    • 現(xiàn)在你已經(jīng)了解了各種shell進(jìn)程以及對(duì)應(yīng)的環(huán)境文件疾就, 找出永久性環(huán)境變量就容易多了。 也可以利用這些文件創(chuàng)建自己的永久性全局變量或局部變量艺蝴。
    • 最好是在/etc/profile.d目錄中創(chuàng)建一個(gè)以.sh結(jié)尾的文件猬腰。 把所有新的或修改過(guò)的全局環(huán)境變量設(shè)置放在這個(gè)文件中。
    • 用source命令使其生效(否則需注銷重新登錄才能生效)
  7. 數(shù)組變量
    要給某個(gè)環(huán)境變量設(shè)置多個(gè)值猜敢, 可以把值放在括號(hào)里姑荷, 值與值之間用空格分隔。

     mytest=(one two three four five)
     echo $mytest    # one
     echo ${mytest[2]}    #three
     echo ${mytest[*]}    #one two three four five
     mytest[2]=seven    #one two seven four five
     unset mytest[2]      #one two four five
     echo ${mytest[2]}    #空
     echo ${mytest[3]}    #four
     unset mytest
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锣枝,一起剝皮案震驚了整個(gè)濱河市厢拭,隨后出現(xiàn)的幾起案子兰英,更是在濱河造成了極大的恐慌撇叁,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畦贸,死亡現(xiàn)場(chǎng)離奇詭異陨闹,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)薄坏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門趋厉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人胶坠,你說(shuō)我怎么就攤上這事君账。” “怎么了沈善?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵乡数,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我闻牡,道長(zhǎng)净赴,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任罩润,我火速辦了婚禮玖翅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘割以。我一直安慰自己金度,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布严沥。 她就那樣靜靜地躺著审姓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祝峻。 梳的紋絲不亂的頭發(fā)上魔吐,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天扎筒,我揣著相機(jī)與錄音荣刑,去河邊找鬼蛤铜。 笑死交掏,一個(gè)胖子當(dāng)著我的面吹牛僧免,可吹牛的內(nèi)容都是我干的杜顺。 我是一名探鬼主播灿巧,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼纵装,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钧汹!你這毒婦竟也來(lái)了相满?” 一聲冷哼從身側(cè)響起层亿,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎立美,沒(méi)想到半個(gè)月后匿又,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡建蹄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年碌更,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洞慎。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡痛单,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出劲腿,到底是詐尸還是另有隱情旭绒,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布焦人,位于F島的核電站挥吵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏垃瞧。R本人自食惡果不足惜蔫劣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望个从。 院中可真熱鬧脉幢,春花似錦、人聲如沸嗦锐。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奕污。三九已至萎羔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間碳默,已是汗流浹背贾陷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工缘眶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人髓废。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓巷懈,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親慌洪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子顶燕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容