5.1
一、三種變數型別
二、三個與變數有關的命令
env: 顯示與當前使用者相關的環境變數,還可以讓命令在指定環境中執行。
export:顯示從 shell 中匯出成環境變數的變數,也能通過它將自定義變數匯出為環境變數。
使用export的例子:
$ temp=shiyanlou
$ echo $temp
shiyanlou
$ zsh
$ echo $temp
無輸出$ exit
$ export temp
$ zsh
$ echo $temp
shiyanlou
三、永久生效
export的功能:對當前的shell裡,將自定義變數轉化成環境變數。關閉後開啟就無效了。讓變數永久生效,需要修改配置檔案。
兩個檔案:/etc/bashrc(有的 linux 沒有這個檔案) 和 /etc/profile ,它們分別存放的是 shell 變數和環境變數。每個使用者目錄(home/shiyanlou)下還有乙個隱藏檔案.profile,裡面的配置只對當前使用者有效。
需要變數永久生效,就開啟etc/profile,新增環境變數。
5.2一、環境變數path的用處:搜尋shell輸出的命令,讓命令執行。path裡面儲存了執行命令的搜尋路徑。
5.3一、新增路徑的例子:
~先在home/shiyanlou裡建立兩個可執行檔案helloshell.sh(要修改許可權 $ chmod 755)、helloworld.c(要使用 $ gcc -o helloworld helloworld.c 生成可執行檔案)
~然後建立目錄 $ mkdir mybin
移動兩個檔案到這個目錄 $ mv helloshell.sh helloworld mybin/
然後執行兩個檔案 $ ./helloshell.sh $./helloworld
會看到結果
~返回到home/shiyanlou ,再執行兩個檔案,就找不到目錄了。
於是新增path路徑
$ path=$path:/home/shiyanlou/mybin
這樣就可以在任何地點執行這兩個命令了,但是要去掉./
但是這個方法,在退出shell之後再開啟就失效了
二、永久生效的方法:
將命令直接新增到指令碼配置檔案中。
這個檔案在home/shiyanlou裡
zsh的配置名是.zshrc;bash的配置名是.bashrc
將命令新增到.zshrc中:
$ echo 「path=$path:/home/shiyanlou/mybin」 >> .zshrc
注:>>是追加 >是直接覆蓋,若沒有這個檔名,會新建乙個進行覆蓋
5.4修改和刪除已有變數
5.5讓環境變數立刻生效
通常,修改了指令碼檔案以後需要退出中斷重新開啟,或者是重啟,才能生效。
但是使用 source,可以立刻生效
$ cd /home/shiyanlou
$ source .zshrc
5.6搜尋檔案
一、whichis (在資料庫中找檔案,很快)
whereis命令只能用於程式名的搜尋,而且只搜尋二進位制檔案(引數-b)、man說明檔案(引數-m)和源**檔案(引數-s)。如果省略引數,則返回所有資訊。
例子:whichis svn :找出跟svn有關的所有檔案
whichis -b svn :找出svn的二進位制檔案
whichis -m svn :找出svn的路徑檔案
whichis -s svn :找出svn的源**檔案
學習:二、locate
locate 讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立乙個包括系統內所有檔名稱及路徑的資料庫,之後當尋找時就只需查詢這個資料庫,而不必實際深入檔案系統之中了。
這個資料庫也不是實時更新的,系統會使用定時任務每天自動執行 updatedb 命令更新一次,所以有時候你剛新增的檔案,它可能會找不到,需要手動執行一次 updatedb 命令。
更新命令:
sudo apt-get update
sudo apt-get install locate
例子查詢pwd的所有相關檔案
locate pwd
搜尋etc目錄下所有以sh開頭的檔案
locate /etc/sh
搜尋etc中以.jpg結尾的檔案
命令引數:
-e 將排除在尋找的範圍之外。
-1 如果 是 1.則啟動安全模式。在安全模式下,使用者不會看到許可權無法看到 的檔案。這會始速度減慢,因為 locate 必須至實際的檔案系統中取得檔案的 許可權資料。
-f 將特定的檔案系統排除在外,例如我們沒有到理要把 proc 檔案系統中的檔案 放在資料庫中。
-q 安靜模式,不會顯示任何錯誤訊息。
-n 至多顯示 n個輸出。
-r 使用正規表示式 做尋找的條件。
-o 指定資料庫存的名稱。
-d 指定資料庫的路徑
-h 顯示輔助訊息
-v 顯示程式的版本訊息
學習:三、which 只找path路徑內的
which 本身是 shell 內建的乙個命令,我們通常使用 which 來確定是否安裝了某個指定的軟體,因為它只從 path 環境變數指定的路徑中去搜尋命令。(實驗樓)
我們經常在linux要查詢某個檔案,但不知道放在**了,可以使用下面的一些命令來搜尋:
which 檢視可執行檔案的位置。
whereis 檢視檔案的位置。
locate 配合資料庫檢視檔案位置。
find 實際搜尋硬碟查詢檔案名稱。
which命令的作用是,在path變數指定的路徑中,搜尋某個系統命令的位置,並且返回第乙個搜尋結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪乙個位置的命令。 (竹子部落格)
例子:which lsmod
which cd
會找不到,因為cd是bash內自建的命令,在path內找不到
學習:四、find
重開一篇筆記來記錄
環境變數與檔案查詢
一 環境變數 1.變數 計算機用於記錄乙個值 不一定是數值,也可以是字元或字串 的符號,而這些符號將用於不同的運算處理中。通常變數與值是一對一的關係,可以通過表示式讀取它的值並賦值給其它變數,也可以直接指定數值賦值給任意變數。為了便於運算和處理,大部分的程式語言會區分變數的類 型,用於分別記錄數值 ...
環境變數與檔案查詢
一 環境變數 1 變數 預宣告變數 例 declare temp 也可以不宣告直接建立 例 temp shiyanlou 讀取變數的值 例 echo temp 2 變數型別 a.當前shell程序私有使用者自定義變數,如temp b.shell本身內建的變數 c.從自定義變數匯出的環境變數。與變數相...
環境變數與檔案查詢
shell中的變數有型別但不用專門指定型別名,屬於弱型別程式語言,可參與運算也有變數的作用域。declare temp 用declare預先宣告乙個變數 也可以不用宣告,直接即用即建立,像python變數一樣 temp shiyanlou 直接給變數賦值,等號兩邊不能有空格 echo temp 讀取...