linux環境變數PATH學習

2021-06-18 04:49:26 字數 1588 閱讀 8651

$path是linux下極其重要的乙個environment variable,

執行echo $path可以檢視當前的path值,通常是類似於如下的一長串字串:

/bin:/usr/bin:/sbin:/***

使用者也可以手動將需要的任何path追加到$path中,

export path=$path:./

這條命令的作用就是將當前路徑加到$path中。

export path=/bin:/sbin/:ooxx將$path恢復到原來正確的值後,

我們在shell下面執行:

which ls或者whereis ls

你可以發現ls這個程式原來是放在/bin/ls這個path下。

我們知道命令的搜尋是從$path中順序搜尋的,這樣使用者可以編寫自己的scripts來替代linux command。

比如在/usr/scripts/目錄下放乙個ls.sh,再將/usr/scripts放到$path的最前面,

執行ls,因為系統會順序的在$path中查詢ls這條command,

所以會先搜尋/usr/scripts目錄而不是/bin目錄。

問題1:為什麼當$path為空時,我們在shell下面仍然可以正確的執行echo,pwd等命令呢?

這是因為像echo,pwd等命令是屬於shell built-in commands,

當你在shell下去執行這些命令時,shell自己就能解釋它們而不需要從$path下面去找這些命令了。

問題2:為什麼需要$path呢?

如果沒有$path的話,我們仍然可以根據command的absolutely path來執行command,

比如我們執行/bin/ls仍然可以正確的執行ls程式。

但是這樣對於user而言特別是linux administrator而言,每執行乙個命令都必須要先找到這個命令的

absolutely path才能去執行這條command,這樣應該會很不方便吧?

2013/10/23補充:

曾遇到過問題,寫好了scripts,但是執行時卻沒有指定scripts的路徑,從而導致程式出錯的狀況。

這裡就有兩種解法:

1. 將scripts放入指定的目錄,然後將這個目錄追加到環境變數path中,這樣就可以像執行命令那樣

去執行scripts了;

2. 因為無法確定當前當前的工作目錄,執行scripts時,一定要指定scripts的絕對路徑,

這樣才不會發生找不到指定的檔案或目錄帶來的程式錯誤問題。

當然使用方法1或是方法2,使用者可以根據需要自行決定。

問題3:為什麼沒有人將當前path./加到$path中?

這主要是基於安全的考慮,比如你的系統中有這樣乙個名為/tmp_fs的temporary partition,

而預設情況下所有user都有permission去寫temporary partition,這樣你的/tmp_fs如果被黑客放了

乙個名為ls或pwd的木馬或病毒程式時,這時如果你做了:

cd /tmp_fs; ls

這樣的動作時,那你的系統可能就玩完了。

而ls,pwd等等命令,我們真的會經常用一下。

所以,不建議將./追加到$path中。

linux環境變數PATH

root cs70 moban echo path usr local sbin usr local bin usr sbin usr bin root bin 命令時從這些環境變數中開始找的 root cs70 moban mv bin cat opt root cs70 moban which ...

Linux 環境變數 PATH

當我們使用諸如ls mkdir cd這些命令的時候,有沒有想過為啥我們就能直接呼叫?換句話說,在我們輸入這個命令的時候系統是怎麼知道這個命令的執行檔案在哪呢?答案就是 path這個環境變數,可以用echo path把它列印出來看一下。可以看到這個變數包含了許多用分號分隔開的目錄,環境變數的意義在於,...

Linux 環境變數 PATH

我們知道查閱檔案屬性的指令 ls 完整檔名為 bin ls 這是絕對路徑 那為什麼可以在任何地方執行 bin ls 這個指令呢?為什麼在任何目錄下輸入 ls 就一定可以顯示出一些訊息而不會說找不到該 bin ls 指令呢?這是因為環境變數 path 當我們在執行乙個指令的時候,比如ls,系統會依照 ...