Linux環境變量

   Linux環境變量     shell

環境變量(environment variable)

    環境變量是在bash shell 的一個特性,用來存儲系統信息、臨時數據以及配置信息。在bash shell中,環境變量可分爲兩類:全局變量和局部變量。
數組

全局變量:

   做用範圍:當前shell進程及其子shell進程bash

   查看全局環境變量:ide

     查看全部全局環境變量:env或printenv函數

     查看個別環境變量:printenv  VARNAME命令行

              echo  $VARNAME排序

    設置全局環境變量:export 命令用於導出一個局部環境變量到全局環境中繼承

             export VARNAME=VALUE 或 export VARNAME(此時VARNAME爲一個已經存在的局部環境變量)索引

注:父shell建立的全局環境變量在子shell中有效,但子shell建立和修改(包括刪除)全局變量都不會反映到父shell中。three

局部變量:

    做用範圍:當前shell進程

    查看局部環境變量:set (此命令會顯示全部環境變量,包括全局變量、局部變量以及用戶自定義變量,此外,顯示結果還會按字母順序排序)

    設置局部用戶定義環境變量:VARNAME=VALUE

                 若VALUE含有空格,則需用引號括起來:VARNEME=「VALUE」

刪除環境變量:

    unset命令用於刪除已經存在的環境變量:unset VARNAME

注:在涉及環境變量名時,什麼若是要用到變量,就要使用$;若是要操做變量,不使用$(printenv命令除外)。

PATH環境變量:

  PATH環境變量定義了用於進行命令和程序查找的目錄,其中的路徑用:隔開。當在shell命令行界面輸入一個外部命令時,shell會從PATH變量定義的路徑中依次查找,直到找到對應程序。

zhyd@zhyd-Inspiron-5590:~$ echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

若是命令或程序的位置沒有包含在PATH變量中,那麼不使用絕對路徑的話,shell是無法找到的。能夠將可執行文件的路徑添加到PATH變量中以便在目錄的任何位置都能直接執行:

PATH=$PATH:/DIR1/DIR2...

一個執行當前目錄下可執行文件的便捷方法是將當前目錄(.)添加到PATH中:

PATH=$PATH:.

系統環境變量:

系統環境變量是持久化的環境變量,所以是位於bash配置文件中的變量。

要實現環境變量的持久化,可修改shell的變量配置文件,如在/etc/profile.d 下建立一個以 .sh結尾的文件,保存新的或修改過的環境變量;或修改 $HOME/.bashrc 永久存儲我的用戶設置。

啓動bash shell的方式有三種:登陸時做爲默認登陸shell、做爲非登陸shell的交互式shell、做爲運行腳本的非交互式shell。

登陸shell

當用戶以登陸方式啓動一個bash shell時,bash會在幾個文件中查找命令.

  /etc/profile: bash shell 的主啓動文件。只要登陸了Linux,bash就會執行其中的命令;

  /etc/bash.bashrc: 包含了系統環境變量;

  /etc/profile.d : 是一個目錄,其中包含了不一樣shell和系統特定應用的配置文件;

  $HOME目錄下的啓動文件:提供一個用戶專屬的啓動文件來定義該用戶所用到的環境變量。Linux會用到其中的1~2個.在用戶登陸時,會運行第一個被找到的文件,餘下的則被忽略。

  $HOME/.bash_profile

  $HOME/.bash_login

  $HOME/.profile

  注:$HOME下還有一個.bashrc文件,其爲用戶提供了存放命令別名和私有腳本函數的地方。其執行是經過其餘文件來執行的,如.bash_profile。

交互式shell

交互式shell不會訪問/etc/profile 文件,只會檢查HOME目錄下的.bashrc文件。

非交互式shell

系統執行shell腳本的方式是非交互式的。

交互式shell執行命令的方式有兩種:

  1.經過BASH_ENV環境變量來查看要啓動的文件;

  2.使用當前shell的環境變量或繼承父shell 的環境變量。

數組變量

數組是存儲多個值的變量,賦值時用空格隔開,全部值用括號括起來。

mytest=(one two three four five)

使用某個環境變量須要索引值(從0開始),索引值用方括號括起來。索引值支持通配。

echo ${mytest[2]}
three
echo ${mytest[*]}
one two three four five
相關文章
相關標籤/搜索