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
相關文章
- 獲取絕對路徑 【檔案找不到】
- Linux shell:執行shell指令碼的幾種方式Linux指令碼
- Linux檔案的路徑定位-相對路徑和絕對路徑Linux
- PHP取url絕對路徑PHP
- 智慧線上客服系統原始碼GOFLY開發日誌- 3. 獲取程式執行的絕對路徑原始碼Go
- 05_Linux相對路徑和絕對路徑Linux
- shell指令碼linux命令連續執行指令碼Linux
- 執行shell指令碼指令碼
- python獲取指定目錄所有檔案絕對路徑Python
- Java中的獲取檔案的物理絕對路徑,和讀取檔案Java
- 在Linux中,如何使用shell指令碼判斷某個服務是否正在執行?Linux指令碼
- Linux中執行Shell指令碼的方式(三種方法)Linux指令碼
- vbs指令碼獲取Am註冊路徑資訊指令碼
- 最最基礎的乾貨:Linux中的絕對路徑和相對路徑Linux
- Linux c程式中獲取shell指令碼輸出(如獲取system命令輸出)LinuxC程式指令碼
- Linux中絕對路徑和相對路徑有什麼區別?Linux
- 絕對路徑和相對路徑的區別,
- HTML絕對路徑與相對路徑HTML
- Python如何獲取當前執行檔案路徑?Python
- python獲取程式執行檔案路徑的方法其一Python
- Linux檢視程式檔案絕對路徑Linux
- shell指令碼獲取函式返回值指令碼函式
- shell指令碼獲取時間格式化指令碼
- Mac 終端執行 shell 指令碼Mac指令碼
- Shell指令碼執行有哪些方式?linux系統學習指令碼Linux
- Linux Shell指令碼Linux指令碼
- python執行shell並獲取結果Python
- 深入解析Java絕對路徑與相對路徑Java
- linux常用的shell指令碼Linux指令碼
- Linux系統Shell指令碼如何執行?linux運維繫統工程師Linux指令碼運維工程師
- [20231023]生成bbed的執行指令碼(bash shell).txt指令碼
- nodejs路徑處理方法和絕對路徑NodeJS
- FileUpload 上傳的檔案獲取相對路徑
- linux shell指令碼中 =~ 的作用Linux指令碼
- python如何將相對路徑轉換為絕對路徑?Python
- shell指令碼執行錯誤 $‘\r‘:command not found指令碼
- 執行 shell 指令碼 \r 問題解決指令碼
- Linux中絕對路徑和相對路徑是什麼?二者有何區別?Linux