Linux下的變量

Linux下的變量

Linux變量

Linux下的變量主要分為三種:本地變量、環(huán)境變量和位置變量
本地變量本地變量是用戶在當(dāng)前shell生命周期內(nèi)聲明的變量,隨著shell進(jìn)程的終止而銷毀。
環(huán)境變量適用于所有由登錄進(jìn)程產(chǎn)生的子進(jìn)程(父進(jìn)程的環(huán)境變量在子進(jìn)程中可用)。
Shell參數(shù)用于向shell腳本傳遞參數(shù),只讀。

本地變量

本地變量如同局部變量,只在當(dāng)前shell中起作用,不會(huì)影響其他shell中的變量。

  • 變量賦值

    使用variable=value賦值,變量賦值遵循從右到左的順序

    $X=$Y Y=y
    $echo $X
    $y
    
  • 變量顯示

    • 通過(guò)echo顯示某一變量

      $echo $WEEK

    • 通過(guò)set顯示當(dāng)前SHELL的所有變量,包括內(nèi)置變量與用戶定義過(guò)得所有變量。

      $set

  • 變量調(diào)用

    使用$符號(hào)進(jìn)行變量調(diào)用,若與其他字符相連則應(yīng)加上大括號(hào)。

    $echo Today is ${WEEK}day

  • 刪除變量

    使用unset命令刪除變量的賦值

    $unset Z

  • 命令替換

    在Bourne Shell中可以使變量在特定條件下執(zhí)行

    ${variable: -value} 在變量為空時(shí),使用默認(rèn)的value值。變量的值并沒(méi)有改變。
    ${variable:=value} 不但使用默認(rèn)值進(jìn)行替換,而且將默認(rèn)值賦給該變量。
    ${varibale:+value} 當(dāng)變量已賦值時(shí),則用默認(rèn)值進(jìn)行提換,如果為空則顯示空。
    ${variable:?message} 當(dāng)變量已賦值時(shí),則輸出值。未賦值則輸出message。

    $echo Hello $UNAME
    $Hello
    $echo Hello ${UNAME: -there}
    $Hello there
    $echo $UNAME
    $
    $UNAME=hohn
    $echo Hello ${UNAME: -there}
    $Hello john
    
  • 特殊命令

    • readonly 變量名

      使變量名變?yōu)橹蛔x。單獨(dú)運(yùn)行readonly顯示所有的制度變量。

    • export 變量名

      export命令可以將本地變量聲明為環(huán)境變量,供子進(jìn)程使用。

Shell參數(shù)

  • 位置參數(shù)

    由系統(tǒng)提供的參數(shù)稱為位置參數(shù)。位置參數(shù)的值可以用$N得到,N是一個(gè)數(shù)字,如果為1,即$1.類似C語(yǔ)言中的數(shù)組,在shell解釋用戶的命 令時(shí),將把命令行的第一個(gè)字作為命令,而其他的字作為參數(shù)。當(dāng)命令對(duì)應(yīng)的可執(zhí)行文件為Shell程序時(shí),這些參數(shù)將作為位置變量傳送給該程序。第0號(hào)為程 序名字,從1開(kāi)始就表示傳遞給程序的參數(shù)。第一個(gè)參數(shù)記為$1,第二個(gè)為$2....第九個(gè)為$9。其中1到9是真正的參數(shù)名,"$"符只是用來(lái)標(biāo)識(shí)變量的替換

  • 內(nèi)部參數(shù)

    Shell內(nèi)存在著幾個(gè)內(nèi)部變量,代表著程序本身。
    $# ----傳遞給程序的總的參數(shù)數(shù)目
    $? ----上一個(gè)代碼或者shell程序在shell中退出的情況,如果正常退出則返回0,反之為非0值
    $* ----傳遞給程序的所有參數(shù)組成的字符串
    $- ----在Shell啟動(dòng)或使用set命令時(shí)提供選項(xiàng)
    $? ----上一條命令執(zhí)行后返回的值
    $$ ----當(dāng)前shell的進(jìn)程號(hào)
    $! ----上一個(gè)子進(jìn)程的進(jìn)程號(hào)
    $@ ----所有的參數(shù),每個(gè)都用雙括號(hào)括起
    $n ----位置參數(shù)值,n表示位置
    $0 ----當(dāng)前shell名

環(huán)境變量

  • 變量賦值

    1. Linux中包含環(huán)境變量配置文件的調(diào)用順序

      系統(tǒng)啟動(dòng):

      • etc/environment(該文件為整個(gè)系統(tǒng)的環(huán)境,在系統(tǒng)啟動(dòng)時(shí)載入)

      用戶登錄(login shell):

      • etc/profile (用戶登錄時(shí)讀取的環(huán)境設(shè)置,所有用戶的統(tǒng)一環(huán)境變量)
      • ~/.bash_profile ~/.bash_login ~/.profile (在用戶登錄后,profile會(huì)依次在用戶目錄查找以上三個(gè)文件。profile會(huì)調(diào)用第一個(gè)找到的文件,在調(diào)用后返回。)
      • ~/.bashrc etc/bashrc
        (/.bash_profile會(huì)調(diào)用/.bashrc,而~/.bashrc一般會(huì)調(diào)用etc/bashrc)

      打開(kāi)新的終端(non-login shell)

      • ~/.bashrc (在每一次打開(kāi)新的終端窗口時(shí),都會(huì)被調(diào)用)
      • etc/bashrc (由.bashrc調(diào)用)
    2. 環(huán)境變量的設(shè)置

      1. 在/etc/profile文件中添加環(huán)境變量

        在登陸系統(tǒng)時(shí)讀取,針對(duì)所有用戶,永久有效

         ```Shell
         //添加CLASSPATH
         $ vi /etc/prfile
         
         //在文件中添加
         export CLASSPATH=XXXXXXX
         
         //若需要立即生效
         $ source /etc/profile
         ```
        
      2. 在~/.bash_profile中添加環(huán)境變量

        在登錄系統(tǒng)時(shí)讀取,針對(duì)單一用戶,永久有效

      3. 在~/.bashrc中添加變量

        在系統(tǒng)登錄和每次打開(kāi)Shell時(shí)讀取,針對(duì)單一用戶,永久有效

      4. 使用export命令定義變量

        支隊(duì)當(dāng)前Shell臨時(shí)有效

  • 變量顯示

    • 通過(guò)echo顯示某一環(huán)境變量

      $echo $PATH

    • 通過(guò)env活著printenv顯示當(dāng)前所有環(huán)境變量

      $env

  • 變量調(diào)用

    使用$符號(hào)進(jìn)行變量調(diào)用,若與其他字符相連則應(yīng)加上大括號(hào)。

    $echo $PATH

  • 變量刪除

    可以使用unset刪除環(huán)境變量。
    Shell關(guān)閉時(shí),在Shell中export設(shè)置的環(huán)境變量會(huì)銷毀。

  • 常用變量

    PATH 決定了shell將到哪些目錄中尋找命令或程序
    HOME 當(dāng)前用戶主目錄
    HISTSIZE 歷史記錄數(shù)
    LOGNAME 當(dāng)前用戶的登錄名
    HOSTNAME 指主機(jī)的名稱
    SHELL 當(dāng)前用戶Shell類型
    LANGUGE 語(yǔ)言相關(guān)的環(huán)境變量,多語(yǔ)言可以修改此環(huán)境變量
    MAIL 當(dāng)前用戶的郵件存放目錄
    PS1 基本提示符,對(duì)于root用戶是#,對(duì)于普通用戶是$

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容