Bash變量

變量

什麼是變量?變量的分類?

變量定義

變量命名規則:linux

變量按照存儲數據分類shell

字符串型,整型,浮點型,日期型編程

分類安全

用戶自定義變量bash

簡介工具

變量不能數字開頭,等號兩端不能有空格,變量中存在空格時須要雙引號或單引號括起來(雙引號與單引號區別:雙引號括起來的字符中若是有特殊字符會起做用,單引號中喪失做用)。spa

變量定義操作系統

變量調用.net

注:echo是輸出指令,還有其他的不少指令能夠實現這種功能。只要調用變量都須要在其前面加$(定義時不加$,這與PHP不同)。命令行

變量疊加

有時咱們須要修改某一些變量,可是不是改變內容,這時能夠用疊加。

操做:

 

變量查看

Set會查詢當前shell中運行的全部變量,與前面的調用不同。能夠列出系統默認存在的環境變量。

 

注:查看一個不存在的變量會顯示空,這會有歧義,由於若是一個變量賦值爲空,輸出也是這樣子。因此用set -u指令能夠區分。

變量刪除

注:這裏不須要加$,刪除變量並非刪除變量值。

Bash環境變量

簡介

 

 

注:在shell中輸入bash能夠進入子shell,輸入exit退出子shell,輸入pstree查看。

 

設置環境變量

查看環境變量

注:env只用來查看環境變量。

刪除環境變量

父shell定義的變量雖然在子shell中能夠查看,可是不能在子shell中刪除,必須回到父shell中才能夠。

經常使用環境變量

PATH環境變量

注:系統命令好比ls能夠不須要輸入路徑就執行,這就是由於在PATH中有定義的命令路徑。

操做:

 

注:第一個是相對路徑執行,第二個是絕對路徑。

Vi中內容:

若是咱們想設置爲環境變量,不須要這麼繁瑣的輸入路徑,直接識別指令,有兩種方法:

  1. hello.sh複製到PATH的某一路徑下,好比bin目錄下

注:這樣容易混亂,不建議使用。

  1. 利用變量疊加,在PATH以後疊加路徑

注:這樣只是臨時生效,一旦重啓就消失。若是想要永久起做用,就須要將其寫入對應的文件之中。

PS1環境變量

定義當前操做系統的起始符。

 

注:\u——當前用戶,@——沒有做用,\h——簡寫主機名,空格——無心義,\w——當前所在路徑的最後一個目錄,\$——提示符。

操做:

注:這裏#與PS1之間有空格,且後面有單引號,$與’之間有空格。改完以後前面的顯示就改變了。

PS2環境變量

注:若是有的指令太長,一行輸入不下,須要換行,可使用指令+\的形式,以後會出現>,這個符號就是PS2定義的。

bash語系變量

當前語系查詢

注:當前生效的是LANG,實際上此時LC_ALL是空的。

查看系統默認語系

注:這個是系統開機以後默認進入的語系,而LANG是當前的語系,若是當前是中文,默認語系修改爲英文,則重啓後會顯示英文。

Linux中文支持

注:遠程工具能夠顯示中文,而純正的linux字符界面是英文的。

位置參數變量

舉例:

$n

分析:

腳本中內容:

注:這裏num=$1,不能是$s1。

結果:

注:$n是向程序傳遞參數,這樣比直接用常量方便,可是咱們必須事先了解它的使用規則(這裏必須在後面加上兩個參數才能夠運行這個腳本),所以不適用第三方用戶,只適合編寫者本身使用。

易錯點:

這裏錯誤緣由在於sum1與後面等號之間多空格,不能留有空格。

$*$@$#

腳本內容:

運行結果:

 

$*$@區別:

注:$*把裏面的數字看作一個值,只會循環一次。$@把輸入的參數看作獨立的,循環屢次。這裏必定要注意雙引號。

注:這裏介紹一下linux中的for循環,其格式爲:

注:in以後跟幾個數for循環幾回,,每次循環把in後面的值賦值給變量i。

輸出結果:

腳本內容:

輸出結果:

預約義變量

注:命令執行錯誤返回的數值不是用戶決定的,有寫具體指令的人肯定返回的非零值。

注:實際上邏輯與、或操做中,後面一條指令是否執行就是經過判斷第一條指令返回值肯定的。

$$

$!

好比find指令前臺運行不合適,可能會卡在shell上,須要後臺運行。後臺運行符號爲&。

結果:

預約義變量名稱和做用都不能夠更改。

接受鍵盤輸入

注:位置參數變量只適用於做者使用,其他用戶不知道怎麼輸入,所以這裏用到read指令。

舉例:

結果:

其他參數:

注:密碼不能顯示出來,須要使用-s,規定輸入時間-p。須要添加換行符前面須要echo -e。

結果:

注:我這裏輸入的密碼其實是給一個變量了,留做其餘的輸入。

指定接受

 

shell編程環境變量配置文件

環境變量配置文件簡介

變量類型

注:環境變量必須寫到相應的文件中,不然重啓後消失。

Source命令

注:在.與配置文件之間有一個空格。

注:在.後面加一個空格,這裏的.就表示source命令了,而不是隱藏文件(.bashrc這裏是隱藏文件,./表示當前路徑)。

環境變量配置文件介紹

 

舉例:

注:其實環境變量也不必定都是開機後生效,也有關機後生效的。第三、4個是在家目錄下,而每一個用戶都有不一樣的家目錄,所以這是每一個用戶本身獨有的。而第一、二、5放在etc下,全部的用戶都會用到,對全部用戶有效。

 

環境變量配置文件功能

做用的前後順序

注:正常登陸過程(不是正常啓動過程,須要輸入用戶名和密碼),加載順序是上面的順序,裏面的環境變量都會起做用。不完整的登陸過程(好比超級用戶切換到普通用戶,不須要輸入用戶名和密碼),以下所示:

注:這裏加載完左側的紅線部分之後,再加載右側的命令行。

/etc/profile

查看:vi /etc/profile,這時login時使用的,也就是須要輸入用戶名和密碼。定義PATH,判斷是否是超級用戶(這直接決定登錄後的所處的文件路徑):

 

注:在命令行中直接輸入umask,輸出一串數字:

注:第一0,定義系統特殊權限,後面3個是若是新建一個文件,其默認權限由這3個定義。

umask原理:

  1. 執行權限是文件的最高權限,這裏不容許新建立的文件就具備可執行權限,這樣不安全,只能建立讀寫(即6)的文件。

  2. 目錄最高權限能夠是777(目錄的最高權限就是進入目錄)。

  3. 權限不能使用數字換算,必須是字母:也就是將系統規定設置的最高權限減去umask的權限,重疊的權限刪除(這就至關於相減的操做)。文件權限設置以下:

注:這裏前一個是666,第二個是022(umask值),相減結果爲644(即設定的文件權限,咱們能夠在profile中更改umask值,這樣新建立的文件權限也就跟着改變了)。

對於目錄:

語系

注:咱們只須要了解profile.d中的lang便可。

 

注:若是須要修改歷史命令條數,修改/etc/profile,別名在~/bashrc,登陸起始符在/etc/bashrc。

常見錯誤:登陸後起始符錯誤

注:/etc/bashrc是在最後調用的,若是前面的某一文件消失則不會加載bashrc,這樣就會顯示系統自帶的提示符。

 

其餘環境變量配置文件

註銷時生效的環境變量配置文件

注:在此時時空的,也就是退出後不執行任何操做,固然咱們能夠定義爲清空歷史命令:

 

注:通常不建議清楚歷史,登錄後輸入history能夠查看歷史命令。

 

注:默認狀況下歷史條數爲1000條,可否改動大小取決於命令的存儲位置,若是在內存中不建議修改太大,若是在硬盤中則能夠修改。我當前命令產生的歷史會記錄在內存中並不會當即存儲在.bash_history中。

相關文章
相關標籤/搜索