標籤:linux unix 登陸環境 4種變數 各種引號的作用
第十三章 登陸環境
登陸系統時,輸入使用者名稱和密碼後,如果驗證通過,則進入登入環境。
登入過程
檔案/etc/passwd
$HOME.profile
定製$HOME.profile
/etc/passwd 檔案解析(抽取其中的一行作為樣本):
1234 5 6 7root:<span style="white-space:pre"></span>x:0:0:root:<span style="white-space:pre"></span>/root:<span style="white-space:pre"></span>/bin/bash第 1 域 : 登入名稱第 2 域 : 加密後的密碼第 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 = valuereadonly variable-name
環境變數
環境變數用於所有使用者進程。環境變數可以在命令列中設定,但使用者登出時這些值將丟失,因此最好在. p r o f i l e檔案中定義。環境變數應用於使用者進程前,必須用e x p o r t命令匯出。環境變數與本地變數設定方式相同。
設定環境變數 var=value:export var 或
var = valueexport 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 將 反引號括起來的 內容 作為系統命令,並執行。
反斜線:反斜線用於屏蔽特殊字元的特殊意義。
Linux Unix shell 編程指南學習筆記(第三部分)