第五節:環境變量與文件查找

? ? ? ? 本節我們主要學習環境變量的作用與用法,及幾種搜索文件的方法。學會這些技巧可以高效地使用Linux 。

1.環境變量:

? ? ?(1).變量:變量的作用域即變量的有效范圍(比如一個函數中、一個源文件中或者全局范圍),在該范圍內只能有一個同名變量。一旦離開則該變量無效,如同不存在這個變量一般。

? ? ?使用declare命令創建一個變量名為 tmp 的變量:

declared tmp使用=號賦值運算符,將變量 tmp 賦值為 shiyanlou:

tmp=shiyanlou讀取變量的值,使用echo命令和$符號;echo $。

? ? (2).環境變量:

? ? 通常我們會涉及到的變量類型有三種:

? ? ?·當前Shell 進程私有用戶自定義變量,如上面我們創建的 tmp 變量,只在當前Shell 中有效。

? ? ?·Shell 本身內建的變量。

? ? ·從自定義變量導出的環境變量。

? ? ?命令說 明

? ? ? ? ?set顯示當前 Shell 所有變量,包括其內建環境變量(與 Shell 外觀等相關),用戶自定義變量及導出的環境變量。env顯示與當前用戶相關的環境變量,還可以讓命令在指定環境中運行。export顯示從 Shell 中導出成環境變量的變量,也能通過它將自定義變量導出為環境變量。

? ?為了與普通變量區分,通常我們習慣將環境變量名設為大寫。

3.命令的查找路徑與順序:

? ? ? 在Shell 中輸入一個命令,通過環境變量PATH來進行搜索,這個PATH里面就保存了 Shell 中執行的命令的搜索路徑。在Shell 中執行一個命令時,系統就會按照 PATH 中設定的路徑按照順序依次到目錄中去查找,如果存在同名的命令,則執行先找到的那個。

? 例如:在腳本中添加如下內容,保存并退出;

? ?For((i=0;i<0;i++));do

? ?Echo”hello shell”

? ?Done

? ?Exit 0

? ? 為文件添加可執行權限:chmod 755 hello_shell.sh執行腳本:./hello_shell.sh

? ? 創建一個c語言的程序:

?Int main ()

?{

?Printf(“hello world!\n”);

?Return 0;

?}

? ? ? ?保存后使用gcc 生成可執行文件,在shiyanlou 家目錄創建一個mybin目錄,并將上述 hello_shell.sh 和 hello_world 文件移動到其中,就可以在mybin目錄中分別運行你剛剛創建的兩個程序了。

?4.添加自定義路徑:

?注意這里一定要使用絕對路徑。

? ? ? ? 在每個用戶的home 目錄中有一個 Shell 每次啟動時會默認執行一個配置腳本,以初始化環境,包括添加一些用戶自定義環境變量等等。zsh 的配置文件是.zshrc,相應Bash 的配置文件為.bashrc。它們在etc下還都有一個或多個全局的配置文件。

?5.修改和刪除已有變量

?變量設置方式說明

? $ ? {變量名#匹配字串}從頭向后開始匹配,刪除符合匹配字串的最短數據

? $ ? {變量名##匹配字串}從頭向后開始匹配,刪除符合匹配字串的最長數據

? $ ? {變量名%匹配字串}從尾向前開始匹配,刪除符合匹配字串的最短數據

? $ ? {變量名%%匹配字串}從尾向前開始匹配,刪除符合匹配字串的最長數據

? $ ? {變量名/舊的字串/新的字串}將符合舊字串的第一個字串替換為新的字串

? $ ? {變量名//舊的字串/新的字串}將符合舊字串的全部字串替換為新的字串

?6.如何讓環境變量立即生效:

? ? ?我們可以使用source命令來讓其立即生效,如:source.zshrc ? source命令還有一個別名就是.,注意與表示當前路徑的那個點區分開,雖然形式一樣,但作用和使用方式一樣,上面的命令如果替換成.的方式: ??. ./ .zshrc

7.搜索文件:

? ?與搜索相關的命令常用的有whereis,which,find和locate。

·whereis簡單快速

? ? whereis只能搜索二進制文件(-b),man 幫助文件(-m)和源代碼文件(-s)。如果想要獲得更全面的搜索結果可以使用locate命令。

·locate快而全

? ? ? 通過“ /var/lib/mlocate/mlocate.db ”數據庫查找,不過這個數據庫也不是實時更新的,系統會使用定時任務每天自動執行updatedb命令更新一次,剛添加的文件,它可能會找不到,需要手動執行一次updatedb命令。它可以用來查找指定目錄下的不同文件類型,如查找 /etc 下所有以 sh 開頭的文件:注意,它不只是在/etc 目錄下查找,還會自動遞歸子目錄進行查找。

? ? ? 查找/usr/share/ 下所有 jpg 文件:注意要添加*號前面的反斜杠轉義,否則會無法找到。如果想只統計數目可以加上-c參數,-i參數可以忽略大小寫進行查找,whereis 的-b、-m、-s同樣可以使用。

·which小而精

? ? ? which本身是 Shell 內建的一個命令,我們通常使用which來確定是否安裝了某個指定的軟件,因為它只從PATH環境變量指定的路徑中去搜索命令:

·find精而細

? ? ? find相比較功能較為強大,它不但可以通過文件類型、文件名進行查找而且可以根據文件的屬性(如文件的時間戳,文件的權限等)進行搜索。find命令強大到,要把它講明白至少需要單獨好幾節課程才行,我們這里只介紹一些常用的內容。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、環境變量 1. 變量 變量就是計算機中用于記錄一個值(數值,字符或字符串)的符號。通常變量與值是一對一的關系,...
    睡不醒醒閱讀 946評論 0 1
  • 一、關于環境變量 1、變量:用于記錄一個值的符號 (注意:Shell變量不用專門指定類型名) 變量的作用域: 變...
    bewhyy閱讀 503評論 0 0
  • 一、實驗介紹 1.1 實驗內容 本節實驗介紹環境變量的作用與用法,及幾種搜索文件的方法。學會這些技巧可以高效地使用...
    harrytc閱讀 400評論 0 0
  • 一、環境變量 1. 變量所謂變量就是計算機中用于記錄一個值(不一定是數值,也可以是字符或字符串)的符號,而這些符號...
    e9f3ca3721bc閱讀 412評論 0 0
  • 環境變量與文件查找 環境變量 變量 : 計算機中用于記錄一個值(不一定是數值,也可以是字符或字符串)的符號,而這些...
    魚擺擺_a8ac閱讀 491評論 0 0