溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux 相對(duì)路徑和絕對(duì)路徑的使用

發(fā)布時(shí)間:2020-10-08 20:38:16 來源:腳本之家 閱讀:186 作者:滄海一笑-dj 欄目:服務(wù)器

01. 概述

絕對(duì)路徑和相對(duì)路徑在shell環(huán)境中經(jīng)常遇到,各有用處。有時(shí)候相對(duì)路徑比較方便,有時(shí)候絕對(duì)路徑比較方便。

02. 絕對(duì)路徑(Absolute Pathname)

絕對(duì)路徑必定由**/**開頭

絕對(duì)路徑是為檔案/文件的所在位置做指向

在任何時(shí)候,都可以用絕對(duì)路徑來找到我們想要的文件

舉例說明

示例一:
/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 ,不過乙卻喜歡安裝在 /home/packages/etc, /home/packages/bin, /home/packages/man 這三個(gè)目錄中,請(qǐng)問如果需要用到絕對(duì)路徑的話,那么是否很麻煩呢?是的! 如此一來每個(gè)目錄下的東西就很難對(duì)應(yīng)的起來!這個(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ì)于文檔名的正確性來說,『絕對(duì)路徑的正確度要比較好~』。 一般來說,鳥哥會(huì)建議你,如果是在寫程序 (shell scripts) 來管理系統(tǒng)的條件下,務(wù)必使用絕對(duì)路徑的寫法。 怎么說呢?因?yàn)榻^對(duì)路徑的寫法雖然比較麻煩,但是可以肯定這個(gè)寫法絕對(duì)不會(huì)有問題。 如果使用相對(duì)路徑在程序當(dāng)中,則可能由于你運(yùn)行的工作環(huán)境不同,導(dǎo)致一些問題的發(fā)生。

06. 思維發(fā)散

問題: 在給出相對(duì)路徑時(shí),系統(tǒng)如何識(shí)別其相應(yīng)的絕對(duì)路徑呢?

事實(shí)上,相對(duì)路徑是根據(jù)PATH環(huán)境變量來查找絕對(duì)路徑的。

舉例來說,我目前在 /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ì)路徑的過程。

所以我們就可以理解為什么執(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í)有所幫助,也希望大家多多支持億速云。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI