1. 程式人生 > 其它 >3.3 Linux絕對路徑和相對路徑詳解

3.3 Linux絕對路徑和相對路徑詳解

在 Linux 中,簡單的理解一個檔案的路徑,指的就是該檔案存放的位置,例如,在《Linux檔案系統的層次結構》中提到的 /home/cat 就表示的是 cat 檔案所存放的位置。只要我們告訴 Linux 系統某個檔案存放的準確位置,那麼它就可以找到這個檔案。

指明一個檔案存放的位置,有 2 種方法,分別是使用絕對路徑和相對路徑。

我們知道,Linux 系統中所有的檔案(目錄)都被組織成以根目錄“/”開始的倒置的樹狀結構,如圖 1 所示。


圖 1 Linux系統檔案組織結構示意圖

絕對路徑一定是由根目錄 / 開始寫起。例如,使用絕對路徑的表示方式指明 bin 檔案所在的位置,該路徑應寫為 /usr/bin,測試程式碼如下:

[root@localhost ~]# bin
bash: bin: command not found  <-- 沒有找到
[root@localhost ~]# /usr/bin
bash: /usr/bin: is a directory  <-- 是一個檔案

可以看到,如果僅傳遞給 Linux 系統一個檔名,它無法找到指定檔案;而當將 bin 檔案的絕對路徑傳遞 Linux 系統時,它就可以成功找到。

和絕對路徑不同,相對路徑不是從根目錄 / 開始寫起,而是從當前所在的工作目錄開始寫起。使用相對路徑表明某檔案的儲存位置時,經常會用到前面講到的 2 個特殊目錄,即當前目錄(用 . 表示)和父目錄(用 .. 表示)。

舉個例子,當我們使用 root 身份登入 Linux 系統時,當前工作目錄預設為 /root,如果此時需要將當前工作目錄調整到 root 的子目錄 Desktop 中,當然可以使用絕對路徑,示例程式碼如下:

[root@localhost ~]# pwd   <-- 顯示當前所在的工作路徑
/root
[root@localhost ~]# cd /root/Desktop
[root@localhost Desktop]# pwd
/root/Desktop

注意,這裡所使用的 pwd 和 cd 命令,目前只需知道它們的功能即可,具體用法會在後續文章中作詳細講解。

可以看到,通過使用絕對路徑,我們成功地改變了當前工作路徑。但除此之外,使用相對路徑的方式會更簡單。因為目前處於 /root 的位置,而 Desktop 就位於當前目錄下,所以:

[root@localhost ~]# pwd  <-- 顯示當前所在的工作路徑
/root
[root@localhost ~]# cd ./Desktop
[root@localhost Desktop]# pwd
/root/Desktop

此程式碼中,./Desktop 表示的就是 Destop 檔案相對於 /root 所在的路徑。

再舉一個例子,如果以 root 身份登入 Linux 系統,並實現將當前工作目錄由 /root 轉換為 /usr 目錄,有以下 2 種方式:

\#使用絕對路徑
[root@localhost ~]# pwd <-- 顯示當前所在的工作路徑
/root
[root@localhost ~]# cd /usr
[root@localhost ~]# pwd
/usr
\#使用相對路徑
[root@localhost ~]# pwd <-- 顯示當前所在的工作路徑
/root
[root@localhost ~]# cd ../usr <-- 相對 root,usr 位於其父目錄 /,因此這裡要用到 ..
[root@localhost ~]# pwd
/usr

總之,絕對路徑是相對於根路徑 / 的,只要檔案不移動位置,那麼它的絕對路徑是恆定不變的;而相對路徑是相對於當前所在目錄而言的,隨著程式的執行,當前所在目錄可能會改變,因此檔案的相對路徑不是固定不變的。