Linux Unix shell 程式設計指南學習筆記(第三部分)

weixin_33894992發表於2017-05-25

第十三章  登陸環境

登陸系統時。輸入username和password後。假設驗證通過。則進入登入環境。


登入過程

檔案/etc/passwd

$HOME.profile

定製$HOME.profile


/etc/passwd 檔案解析(抽取當中的一行作為演示樣例):

  1             2       3       4         5               6                7
root:	        x:      0:      0:       root:           /root:         /bin/bash
第  1   域  :  登入名
第  2   域  :  加密後的password
第  3   域  :  使用者標識號(用於系統內部區分使用者,假設多個使用者相應的使用者標識號一樣。系統覺得他們是同一個使用者,但能夠有不同的口令,不同的主資料夾以及不同的登陸shell)
第  4   域  :  組標識號(標識使用者所屬的組,他相應/etc/group 中的一條記錄)
第  5   域  :   使用者全名
第  6   域  :   使用者根資料夾
第  7   域  :   使用者預設的shell

登陸成功後,系統執行兩個環境設定檔案:/etc/profile 和  使用者根資料夾下  .profile


/etc/profile 

該檔案包括:

1、全域性或區域性環境變數

2、PATH 資訊

3、終端設定

4、安全命令

5、日期資訊或放棄操作資訊


stty : stty 用於設定終端特性。


logout檔案(在ubuntu 12.04中 為使用者根資料夾下的  .bash_logout  檔案):

此檔案儲存有執行e x i t命令時,在程式終止前執行的命令。


第十四章   環境和shell變數

shell 變數

環境變數

變數替換

匯出變數

特定變數

向指令碼傳遞資訊

在系統命令列下使用位置引數


shell 變數:shell 變數用一個 “有效的”字串表示,用於暫存資訊。

本地變數:  本地變數在使用者如今的shell生命週期的指令碼中使用,使用者不能在其它shell或程式設定此變數有效。

變數的各種設定模式:

Va r i a b l e - n a m e = v a l u e設定實際值到v a r i a b l e - n a m e
Va r i a b l e - n a m e + v a l u e 假設設定了v a r i a b l e - n a m e,則重設其值
Va r i a b l e - n a m e : ?

v a l u e 假設未設定v a r i a b l e - n a m e,顯示沒有定義使用者錯誤資訊
Va r i a b l e - n a m e ?

v a l u e 假設未設定v a r i a b l e - n a m e,顯示系統錯誤資訊
Va r i a b l e - n a m e : = v a l u e 假設未設定v a r i a b l e - n a m e。設定其值
Va r i a b l e - n a m e : - v a l u e 同上。可是取值並不設定到v a r i a b l e - n a m e,能夠被替換

清除變數:unset   variable-name

顯示全部變數:   set     (readonly 顯示全部的僅僅讀變數)

連線變數值:   ${var1}${var2}${var3}${...}  (將變數並排就能夠實現變數結合在一起)

測試變數是否已經賦值:   var1:-newValue  (假設var1 已經賦值則使用原來的值,否則用newValue作為新的值,可是newValue並沒有賦值給var1)

設定僅僅讀變數。格式:

variable-name = value
readonly variable-name


環境變數

環境變數用於全部使用者程式。

環境變數能夠在命令列中設定,但使用者登出時這些值將丟失,因此最好在. p r o f i l e檔案裡定義。

環境變數應用於使用者程式前,必須用e x p o r t命令匯出。環境變數與本地變數設定方式同樣。


環境變數設定  var=value:export var   或

var = value
export var

顯示環境變數和顯示本地變數一致,使用${var} ,  

檢視全部的環境變數: env

清除環境變數: unset var  (跟清除本地變數一致)


嵌入shell變數

linux預留的環境變數。通常在/etc/profile中建立這些嵌入變數。

CDPATH:cd 一個資料夾時先查詢這個變數,假設存在則此資料夾成為當前資料夾。

EXINIT:儲存使用vi編輯器時的初始化選項。

HOME:儲存使用者根資料夾,使用cd直接進入該資料夾

IFS:指定shell預設域分隔符(能夠指定多個域分隔符)

LOGNAME:儲存登入名

MAIL:儲存郵箱路徑名

MAILCHECK:郵箱檢測頻率(/s)。預設是60秒。

PATH:儲存命令或指令碼查詢的資料夾順序(頻繁-->一般-->不經常使用)

PS1:基本提示符(包括shell提示符),預設root為  # 。 其它使用者為  $

PS2:附屬提示符,多用於多餘一行的命令

SHELL:儲存預設shell,通常在/etc/profile中配置

TERMINFO:儲存終端配置檔案位置。

TERM:儲存終端型別。

TZ:儲存時區值。

一下環境變數沒有提供預設值(上面的環境變數中某些在ubuntu12.04中也沒有提供預設值)

EDITOR:設定預設編輯器

PWD:當前資料夾名

PAGER:儲存螢幕翻頁命令

MANPATH:儲存系統中man檔案的資料夾

LPDEST  或 PRINTER: 預設印表機名


匯出變數

使用 export 匯出變數後。子程式就能夠 “看得見”該變數。


位置變數(位置變數引數),僅僅讀的

使用位置變數引數能夠想shell指令碼傳遞資訊。該引數能夠為隨意多,可是僅僅有前面 9 個能夠被訪問

$ 0$ 1$ 2$ 3 $ 4$ 5 $ 6$ 7 $ 8$ 9  ($0為指令碼名字,其餘為引數)


特定變數,僅僅讀的

特定變數表:

$ #		傳遞到指令碼的引數個數
$ *		以一個單字串顯示全部向指令碼傳遞的引數。與位置變數不同,此選項引數可超過9個
$ $		指令碼執行的當前程式I D號
$ !		後臺執行的最後一個程式的程式I D號
$ @		與$ #同樣。可是使用時加引號,並在引號中返回每一個引數
$ -		顯示s h e l l使用的當前選項,與s e t命令功能同樣
$ ?		顯示最後命令的退出狀態。0表示沒有錯誤,其它不論什麼值表明有錯誤


第十五章     引號

雙引號可引用除字元$、`、\外的隨意字元或字串。


單引號與雙引號類似,不同的是假設遮蔽了其特殊含義時,會將單引號和其內部的值作為一個新的字串。

BOy=‘boy’
echo "like '$BOY'"
echo "like "$BOY""
兩個echo 輸出的內容是不一樣的,前面的echo 多了 一對單引號。


反引號:shell 將 反引號括起來的  內容  作為系統命令,並執行。
反斜線:反斜線用於遮蔽特殊字元的特殊意義。


相關文章