Linux Shell獲取正在執行指令碼的絕對路徑
使用指令碼:
BASE_PATH=$(cd `dirname $0`;pwd)
echo "base_path is $BASE_PATH"
或者
DIR_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
echo "dir_path is $DIR_PATH"
我們在HOME目錄下,建立資料夾a,b,在a目錄下建立test.sh,在HOME目錄下執行test.sh指令碼,執行結果如下:
注意,這種方法一般情況都可以正確獲取,但如果執行指令碼本身是符號連結,那這種方法就不大奏效,我們測試一下,我們在b目錄下建立一個符號連結ln_test.sh,指向a目錄下的test.sh
執行b目錄下的ln_test.sh,得到結果如下:
為了解決符號連結問題,我們可以用以下指令碼
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null && pwd )"
執行a目錄下的test.sh指令碼,得到結果如下:
執行b目錄下的ln_test.sh,得到結果如下:
https://stackoverflow.com/questions/59895/getting-the-source-directory-of-a-bash-script-from-within
相關文章
- JavaScript 獲取目錄絕對路徑JavaScript
- linux下獲取程式當前目錄絕對路徑Linux
- js獲取當前目錄的絕對路徑程式碼例項JS
- JavaScript中獲取當前專案的絕對路徑JavaScript
- PHP取url絕對路徑PHP
- 智慧線上客服系統原始碼GOFLY開發日誌- 3. 獲取程式執行的絕對路徑原始碼Go
- 怎樣獲取Torque.properties檔案的絕對路徑?
- Linux檔案的路徑定位-相對路徑和絕對路徑Linux
- Linux shell:執行shell指令碼的幾種方式Linux指令碼
- 05_Linux相對路徑和絕對路徑Linux
- vbs指令碼獲取Am註冊路徑資訊指令碼
- Java中的獲取檔案的物理絕對路徑,和讀取檔案Java
- Linux下如何執行Shell指令碼Linux指令碼
- python獲取指定目錄所有檔案絕對路徑Python
- 執行shell指令碼指令碼
- 獲取絕對路徑下的檔名和檔案字尾方法
- Linux Shell程式設計(3)——執行shell指令碼Linux程式設計指令碼
- 執行Shell指令碼的方式指令碼
- 將APP加入系統分享+根據Uri獲取絕對路徑APP
- shell指令碼linux命令連續執行指令碼Linux
- 相對路徑轉換為絕對路徑的程式碼例項
- crontab執行shell指令碼指令碼
- HTML絕對路徑與相對路徑HTML
- 絕對路徑和相對路徑的區別,
- 絕對路徑和相對路徑的區別
- Qt的相對路徑轉為絕對路徑QT
- 在Linux中,如何使用shell指令碼判斷某個服務是否正在執行?Linux指令碼
- Linux Shell指令碼中獲取本機ip地址方法Linux指令碼
- 執行Shell指令碼的方式(轉)指令碼
- 最最基礎的乾貨:Linux中的絕對路徑和相對路徑Linux
- html中的路徑的介紹:絕對路徑和相對路徑HTML
- Linux shell指令碼的字串擷取Linux指令碼字串
- 檔案絕對路徑和相對路徑
- Jsp相對路徑和絕對路徑JS
- 檔案的相對路徑和絕對路徑以及根相對路徑
- Linux中絕對路徑和相對路徑有什麼區別?Linux
- Linux中執行Shell指令碼的方式(三種方法)Linux指令碼
- Python如何獲取當前執行檔案路徑?Python