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

來源:互聯網
上載者:User

標籤: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 編程指南學習筆記(第三部分)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.