shell獲取指令碼路徑

2021-10-07 17:24:57 字數 1291 閱讀 9908

以下四種:

$(pwd) ## 獲取當前執行(主函式)指令碼的路徑

$(dirname $0) ## 相對路徑

$( cd " $(dirname $0) " && pwd ) ## 當前執行指令碼的絕對路徑

$( cd $( dirname " $ " ) && pwd ) ## 指令碼絕對路徑(這段**所在指令碼的絕對路徑)

對於第三種情況,它存在的意義在於,當該指令碼被呼叫時,顯示的路徑是這段**所在指令碼的絕對路徑;而指令碼被引用時,變數列印的路徑是主函式指令碼的路徑。如下有兩個bash指令碼,目錄結構如下:

/tmp/

├── main.sh

├── test/

│ ├── a.sh

-

##>> main.sh

bash test/a.sh

##<<

##>>test/a.sh

a_path=

$(cd "$(dirname $0)

" && pwd)

echo "a.sh a_path=

$"##<<

bash main.sh

看下列印結果:

$ bash main.sh

a.sh a_path=/tmp/test

##>> main.sh

. test/a.sh ## or "source test/a.sh"

## 將a_path變數引用過來了,做乙個列印

echo

$##<<

##>>test/a.sh

a_path=

$(cd "$(dirname $0)

" && pwd)

echo "a.sh a_path=

$"##<<

bash main.sh

同樣看下列印結果:

$ bash main.sh

a.sh a_path=/tmp

/tmp

這裡很神奇,一開始我以為a.sh指令碼中的echo路徑會是a.sh的路徑,執行結果並不是,而單獨執行a.sh會是如下:

$ bash test/a.sh

a.sh a_path=/tmp/test

Shell 讀取指令碼路徑

以下是幾種在 shell 中讀取路徑的方法。返回當前工作目錄絕對路徑 echo pwd 返回 shell 第乙個引數。如果被執行物件位於 path 路徑中,則返回該物件絕對路徑 否則返回被執行物件相對路徑。注意,如果被執行物件是乙個鏈結,則返回鏈結所在位置,而不是真正被執行物件的位置。echo 0返...

獲取當前指令碼目錄路徑

for name in os.listdir if name self.cookie file os.remove str self.cookie file windows獲取當前路徑 相對路徑 以當前根目錄為基準 最近的source 路徑 import os from pathlib import...

shell指令碼之獲取終端資訊

如果要處理大量當前的終端的相關資訊,比如行數,列數,游標位置和遮蓋密碼欄位等,就要用到tput和stty這兩個終端處理工具了.獲取終端的行數和列數 tput cols tput lines 列印當前終端名 tput longname 將游標移到方位 100,100 處 tput cpu 100 10...