學習筆記 環境變數與檔案查詢

2021-09-14 00:36:57 字數 3070 閱讀 6030

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 讀取...