01. 概述
絕對(duì)路徑和相對(duì)路徑在shell環(huán)境中經(jīng)常遇到,各有用處。有時(shí)候相對(duì)路徑比較方便,有時(shí)候絕對(duì)路徑比較方便。
02. 絕對(duì)路徑(Absolute Pathname)
絕對(duì)路徑必定由**/**開頭
絕對(duì)路徑是為檔案/文件的所在位置做指向
在任何時(shí)候,都可以用絕對(duì)路徑來(lái)找到我們想要的文件
舉例說(shuō)明
示例一:
/home/deng
示例二:
/usr/share/man
03. 相對(duì)路徑(Relative Pathnames)
相對(duì)路徑不由**/**開頭
相對(duì)路徑是相對(duì)于現(xiàn)在目前所在的位置,為目的地指向
通常相對(duì)路徑比絕對(duì)路徑短一點(diǎn),可以當(dāng)成我們迅速找到文件/檔案的捷徑
示例一:
../test/itcast
示例二:
./test
04. 相對(duì)路徑的用途
那么相對(duì)路徑與絕對(duì)路徑有什么了不起呀?喝!那可真的是了不起了!假設(shè)你寫了一個(gè)軟件, 這個(gè)軟件共需要三個(gè)目錄,分別是 etc, bin, man 這三個(gè)目錄,然而由于不同的人喜歡安裝在不同的目錄之下, 假設(shè)甲安裝的目錄是 /usr/local/packages/etc, /usr/local/packages/bin 及 /usr/local/packages/man ,不過(guò)乙卻喜歡安裝在 /home/packages/etc, /home/packages/bin, /home/packages/man 這三個(gè)目錄中,請(qǐng)問(wèn)如果需要用到絕對(duì)路徑的話,那么是否很麻煩呢?是的! 如此一來(lái)每個(gè)目錄下的東西就很難對(duì)應(yīng)的起來(lái)!這個(gè)時(shí)候相對(duì)路徑的寫法就顯的特別的重要了!
此外,如果你跟鳥哥一樣,喜歡將路徑的名字寫的很長(zhǎng),好讓自己知道那個(gè)目錄是在干什么的,例如: /cluster/raid/output/taiwan2006/smoke 這個(gè)目錄,而另一個(gè)目錄在 /cluster/raid/output/taiwan2006/cctm ,那么我從第一個(gè)要到第二個(gè)目錄去的話,怎么寫比較方便? 當(dāng)然是cd …/cctm比較方便羅!對(duì)吧!
05. 絕對(duì)路徑的用途
但是對(duì)于文檔名的正確性來(lái)說(shuō),『絕對(duì)路徑的正確度要比較好~』。 一般來(lái)說(shuō),鳥哥會(huì)建議你,如果是在寫程序 (shell scripts) 來(lái)管理系統(tǒng)的條件下,務(wù)必使用絕對(duì)路徑的寫法。 怎么說(shuō)呢?因?yàn)榻^對(duì)路徑的寫法雖然比較麻煩,但是可以肯定這個(gè)寫法絕對(duì)不會(huì)有問(wèn)題。 如果使用相對(duì)路徑在程序當(dāng)中,則可能由于你運(yùn)行的工作環(huán)境不同,導(dǎo)致一些問(wèn)題的發(fā)生。
06. 思維發(fā)散
問(wèn)題: 在給出相對(duì)路徑時(shí),系統(tǒng)如何識(shí)別其相應(yīng)的絕對(duì)路徑呢?
事實(shí)上,相對(duì)路徑是根據(jù)PATH環(huán)境變量來(lái)查找絕對(duì)路徑的。
舉例來(lái)說(shuō),我目前在 /home/itcast 這個(gè) itcast使用者的家目錄中,我想要看看里面的 .bashrc 這個(gè)檔案的數(shù)據(jù),使用的是 more 這個(gè)指令,而這個(gè)指令在 /bin/more 當(dāng)中。通常的命令寫法是:
[itcast@localhost ~]$ more .bashrc
而由于PATH變量的值為:
[deng@localhost ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/deng/.local/bin:/home/deng/bin
[deng@localhost ~]$
在執(zhí)行more命令時(shí),shell會(huì)根據(jù)PATH變量的路徑中順序查找,一旦查找匹配到(此例匹配到的應(yīng)該是/bin/more),便執(zhí)行/bin/more .bashrc。這便是執(zhí)行命令時(shí)由相對(duì)路徑查找絕對(duì)路徑的過(guò)程。
所以我們就可以理解為什么執(zhí)行當(dāng)前目錄下的可執(zhí)行程序應(yīng)該用的格式是:
[deng@localhost ~]$ ./test.sh
而不是直接用test.sh了。因?yàn)橥ǔATH變量不包含當(dāng)前路徑。如果不加./會(huì)導(dǎo)致相對(duì)路徑格式的命令找不到絕對(duì)路徑。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。