Linux學習日記--基礎命令(7)--bash中的變量,配置文件

變量的定義和使用

變量類型

        強類型:定義變量時必須指定類型、參與運算必須符合類型要求;調用未聲明變量會產生錯誤;

        弱類型:無須指定類型,默認均爲字符型;參與運算會自動進行隱式類型轉換;變量無須事先定義可直接調用;

變量命名法則:
                1、不能使程序中的保留字:例如if, for;
                2、只能使用數字、字母及下劃線,且不能以數字開頭;
                3、見名知義,


        bash中的變量的種類:
            根據變量的生效範圍等標準:
                本地變量:生效範圍爲當前shell進程;對當前shell之外的其它shell進程,包括當前shell的子shell進程均無效;
                環境變量:生效範圍爲當前shell進程及其子進程;
                局部變量:生效範圍爲當前shell進程中某代碼片斷(通常指函數);
                位置變量:$1, $2, ...來表示,用於讓腳本在腳本代碼中調用通過命令行傳遞給它的參數;

                特殊變量:$?, $0, $*, $@, $#


本地變量:
                變量賦值:name='value'
                    可以使用引用:
                        value:
                            (1) 可以是直接字串; name="username"
                            (2) 變量引用:name="$username"
                            (3) 命令引用:name=`COMMAND`, name=$(COMMAND)
                變量引用:${name}, $name
                    "":弱引用,其中的變量引用會被替換爲變量值;
                    '':強引用,其中的變量引用不會被替換爲變量值,而保持原字符串;
                顯示已定義的所有變量
                    set
                銷燬變量:

                         unset name

  環境變量:
                變量聲明、賦值:
                    export name=VALUE
                    declare -x name=VALUE
                變量引用:$name, ${name}
                顯示所有環境變量:
                    export
                    env
                    printenv
                銷燬:
                    unset name

                bash有許多內建的環境變量:PATH, SHELL, UID, HISTSIZE, HOME, PWD, OLD, HISTFILE, PS1

只讀變量:
                readonly name
                declare -r name

位置變量:
                在腳本代碼中調用通過命令行傳遞給腳本的參數;
                    $1, $2, ...:對應調用第1、第2等參數;

                        shift [n]

                    $0: 命令本身;

                    $*  : 傳遞給腳本的所有參數;
                    $@: 傳遞給腳本的所有參數;
                    $#: 傳遞給腳本的參數的個數;

                示例:判斷給出的文件的行數
                    #!/bin/bash
                    linecount="$(wc -l $1| cut -d' ' -f1)"
                    echo "$1 has $linecount lines."   

bash的配置文件:

按生效範圍劃分,存在兩類:
            全局配置:
                /etc/profile
                    /etc/profile.d/*.sh
                /etc/bashrc
            個人配置:
                ~/.bash_profile
                ~/.bashrc

按功能劃分,存在兩類:
            profile類:爲交互式登錄的shell提供配置
                全局:/etc/profile, /etc/profile.d/*.sh
                個人:~/.bash_profile
                功用:
                    (1) 用於定義環境變量;
                    (2) 運行命令或腳本;

            bashrc類:爲非交互式登錄的shell提供配置
                全局:/etc/bashrc
                個人:~/.bashrc

                功用:
                    (1) 定義命令別名;
                    (2) 定義本地變量;

    shell登錄:
            交互式登錄:
                直接通過終端輸入賬號密碼登錄;
                使用“su - UserName”或“su -l UserName”切換的用戶

    加載流程
                /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc //晚加載的會覆蓋掉先加載的相同變量

            非交互式登錄:
                su UserName
                圖形界面下打開的終端
                執行腳本

   加載流程

                ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh


編輯配置文件定義的新配置的生效方式:
            (1) 重新啓動shell進程;
            (2) 使用source或.命令進程


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章