Shell獲取當前正在執行腳本的絕對路徑

 更新時間:2021年09月10日 11:17:27   作者:SunnyYoona  
本文主要介紹了Shell獲取當前正在執行腳本的絕對路徑,主要有三種方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

1. pwd命令

我們看看使用pwd命令能否獲取當前正在執行腳本的絕對路徑。該命令的作用是“print name of current/working directory”,真實含義是當前工作目錄,并不是正在執行腳本的目錄。

xiaosi@Qunar:~/company/sh$ cat pwd.sh
echo `pwd`
xiaosi@Qunar:~/company/sh$ sh pwd.sh
/home/xiaosi/company/sh
xiaosi@Qunar:~/company/sh$ cd ..
xiaosi@Qunar:~/company$ sh sh/pwd.sh 
/home/xiaosi/company

pwd.sh腳本中只有一句:echo `pwd`。通過在不同路徑下運行腳本,sh pwd.sh得到/home/xiaosi/company/sh,然而sh sh/pwd.sh 得到/home/xiaosi/company,所以說pwd命令并不能得到正在執行腳本的目錄。

2. $0

$0是Bash環境下的特殊變量,其真實含義是:Expands to the name of the shell or shell script. This is set at shell initialization.  If bash is invoked with a file of commands, $0 is set to the name of that file. If bash is started with the -c option, then $0 is set to the first argument after the string to be executed, if one is present. Otherwise, it is set to the file name used to invoke bash, as given by argument zero。

$0值與調用的方式有關:

(1)使用一個文件調用bash,那$0的值是文件的名字

xiaosi@Qunar:~/company/sh$ cat pwd.sh 
echo $0
xiaosi@Qunar:~/company/sh$ sh pwd.sh 
pwd.sh

(2)使用-c選項啟動bash,真正執行的命令會從一個字符串中讀取,字符串后面如果還有別的參數的話,使用從$0開始的特殊變量引用(跟路徑無關了)

(3)除此以外,$0會被設置成調用bash的那個文件的名字(沒說是絕對路徑)

3. 正解

basepath=$(cd `dirname $0`; pwd)

dirname $0,取得當前執行的腳本文件的父目錄

cd `dirname $0`,進入這個目錄(切換當前工作目錄)

pwd,顯示當前工作目錄(cd執行后的)

到此這篇關于Shell獲取當前正在執行腳本的絕對路徑的文章就介紹到這了,更多相關Shell獲取腳本絕對路徑內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Shell編程 Bash引號的那點事

    Shell編程 Bash引號的那點事

    促使我想寫這個系列的文章,是因為看到總有人提到相同的問題,犯相同的錯誤,曾經我也是這么過來的,不忍心看到后面還有人經常這么曲折的過來
    2015-01-01
  • Shell腳本避免重復執行的方法

    Shell腳本避免重復執行的方法

    這篇文章主要介紹了Shell腳本避免重復執行的方法的,本文給出的代碼只要放在需要執行的腳本頭部即可避免重復執行,非常方便實用,需要的朋友可以參考下
    2015-01-01
  • Shell腳本逐行讀取文本文件(不改變文本格式)

    Shell腳本逐行讀取文本文件(不改變文本格式)

    這篇文章主要介紹了Shell腳本逐行讀取文本文件,本文著重探討不改變文本格式的方法讀取出文件內容,需要的朋友可以參考下
    2015-04-04
  • Linux 下載百度網盤大文件的方法

    Linux 下載百度網盤大文件的方法

    Linux 下沒有百度網盤客戶端,用瀏覽器下載速度慢得急死人,本文重點給大家介紹Linux 下載百度網盤大文件的方法,需要的朋友參考下吧
    2017-08-08
  • linux bash字符串處理大全

    linux bash字符串處理大全

    linux bash字符串處理大全,需要的朋友可以參考下
    2013-02-02
  • shell 字符串操作(長度,查找,替換)詳解

    shell 字符串操作(長度,查找,替換)詳解

    在做shell批處理程序時候,經常會涉及到字符串相關操作。有很多命令語句,如:awk,sed都可以做字符串各種操作。其實shell內置一系列操作符號,可以達到類似效果,大家知道,使用內部操作符會省略啟動外部程序等時間,因此速度會非常的快
    2012-09-09
  • 深入理解Linux shell中2>&1的含義(全網最全,看完就懂)

    深入理解Linux shell中2>&1的含義(全網最全,看完就懂)

    這篇文章主要介紹了深入理解Linux shell中2>&1的含義,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • linux下非root用戶運行tomcat

    linux下非root用戶運行tomcat

    這篇文章主要介紹了linux下非root用戶運行tomcat ,需要的朋友可以參考下
    2017-12-12
  • CPU負載監控腳本代碼

    CPU負載監控腳本代碼

    CPU負載監控腳本代碼,需要的朋友可以參考下
    2013-01-01
  • 實例詳解Linxu中df命令

    實例詳解Linxu中df命令

    df 即“可用磁盤”disk free,用于顯示文件系統的磁盤使用情況,本文通過一些例子給大家講解linux df命令,感興趣的朋友一起學習吧
    2015-11-11

最新評論

精品国内自产拍在线观看