Shell PATH變數用法詳解

2022-09-26 13:18:24 字數 1293 閱讀 6029

前面章節我們說過,程式指令碼要想在 linux 中執行,需要使用絕對路徑或相對路徑指定這個指令碼所在的位置。但是為什麼系統命令都沒有指定路徑而是直接執行的?比如,ls 命令並沒有輸入"/bin/ls"來執行,而是直接執行"ls"命令。這就是 path 環境變數的功能了。

先查詢一下 path 環境變數的值,如下:

[root@localhost ~] echo $path

/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/

bin:/root/bin

path 變數的值是用":"分隔的路徑,這些路徑就是系統查詢命令的路徑。也就是說,我們輸入了乙個程式名,如果沒有寫入路徑,系統就會到 path 變數定義的路徑中去尋找是否有可以執行的程式,如果找到則執行,否則會報"命令沒有發現"的錯誤。

那麼,是不www.cppcns.com是我們把自己寫的指令碼複製到 path 變數定義的路徑中也可以不輸入路徑而直接執行呢?當然是可以的,我們試試吧,就拿最開始的 hello.sh 來舉例吧。

[[email protected] ~]# cp /root/sh/hello.sh /bin/

#複製hello.shi到/bin/目錄中

[root@localhost ~]# hello.sh

c.biancheng.net

#hello.sh可以直接執行了

我們只要把程式指令碼複製到 path 變數定義的任意路徑中,比如 /bin/ 目錄下,以後這個指令碼就可以直接執行了,不用再指定絕對路徑或相對路徑。

如果我們把自己寫的所有程式指令碼都放在 /bin/ 目錄下,那麼有時會搞不清系統命令和自己寫的程式(其實筆者很反對改變系統目錄的結構的)。我們是不是可以修改 path 變數的值,而不把程式指令碼複製到 /bin/ 目錄中?

當然是可以的,通過變數的疊加就可以實現了。

[root@localhost ~]# path="$path":/root/sh

#在變數path的後面,加入/root/sh目錄

[root@localhost ~]# echo $path

/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/

bin:/root/bin:/root/sh

#查詢path的值,變數疊加生效了

當然,這樣定義的 path 變數只能臨時生效,一旦重啟或程式設計客棧登出系統就會消失。如果想要永久生效,則需要寫入環境變數配置檔案,我們會在後續章節中再詳細介紹。

python全域性變數的用法詳解

一段時間沒有使用python來寫 就發現以前學習的很多語法都忘了。看來還是當初這方面的專案做的好不夠多,沒有系統性的運用和學習,導致了很多語法不能順手拈來。在接下來的這個專案中,一定要把遇到的一些python知識不熟悉的地方還有遺忘的重新梳理一下,對python要達到靈活運用的境界,不能單純是能敲 ...

python全域性變數的用法詳解

一段時間沒有使用python來寫 就發現以前學習的很多語法都忘了。看來還是當初這方面的專案做的好不夠多,沒有系統性的運用和學習,導致了很多語法不能順手拈來。在接下來的這個專案中,一定要把遇到的一些python知識不熟悉的地方還有遺忘的重新梳理一下,對python要達到靈活運用的境界,不能單純是能敲 ...

PHP 變數用法 變數型別

變數名稱區分大小寫 php語法 name 小發展 echo name name user2 echo name 變數作用 name user200 echo line1 my name is echo line1 my name is echo line1 my name is echo line1...