第十三章 登陸環境
登陸系統時。輸入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 將 反引號括起來的 內容 作為系統命令,並執行。
反斜線:反斜線用於遮蔽特殊字元的特殊意義。