Shell中獲取腳本的絕對路徑$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)


 

 

 

示例代碼

我們可以在bash中使用以下命令獲取所執行腳本的絕對路徑:

#!/bin/bash
DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd);
echo $DIR
代碼解釋

BASH_SOURCE[0] - 等價於 BASH_SOURCE ,取得當前執行的 shell 文件所在的路徑及文件名
dirname - 去除文件名中的非目錄部分,僅顯示與目錄有關的部分
$() - 相當於 `command`, 即獲取command命令的結果
&& - 邏輯運算符號,只有當&&左邊運行成功時才會運行&&右邊的命令

總結

該命令獲取腳本源文件的文件路徑名,獲取其目錄部分,然后 cd 到該目錄,使用 pwd 獲取當前目錄的完整路徑,然后將這個路徑的值賦給變量 DIR

例如 /tmp/test/test.sh 內容如下:

#!/bin/bash

echo "${BASH_SOURCE[0]}"
echo "${BASH_SOURCE}"
echo "$(dirname "${BASH_SOURCE[0]}")"
echo "$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

若在當前目錄 /tmp 下執行 bash ./test/test.sh ,輸出為:

lestat@Lestats-MBP:/tmp$ bash ./test/test.sh
test/test.sh
test/test.sh
test
/tmp/test


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM