Shell Script 取得 Script 所在目錄位置

當寫 Shell Script 時, 很多時需要取得 Shell Script 本身的目錄位置, 以下教學是在 Shell Script 取得目錄位置的寫法。

在 Shell Script 的 $0 變數代表指令的第一個參數, 即 Shell Script 本身, 例如 Shell Script 是 “/root/test.sh”:

#!/usr/bin/sh

echo $0

執行時會返回:

# /root/test.sh
/root/test.sh

所以最簡單的方法是用 dirname, 將 /home/samtang/test.sh 的目錄位置取得, 例如:

執行結果會返回:

# /root/test.sh
/root

以上寫法雖然簡單, 但如果用相對路徑執行, 只會返回相對路徑的目錄, 例如:

# cd /root
# ./test.sh
.

可以看到上面的例子只會返回 “.”, 當然如果執行的 Shell Script 全部用完整的絕對路徑便不用理會, 但如果想要不論用絕對路徑或相對路徑都可以顯示正確, 可以用以下程式碼:

以上 Shell Script 可以正確顯示絕對路徑或相對路徑的目錄。




Leave a Reply