可能重複的文件系統中的位置:
In the bash script how do I know the script file name?Retrive其中一個bash腳本保存
我經常需要一個bash腳本引用其他所需資源的文件系統。通常在shebang行之後使用以下代碼。它設置了一個名爲「scriptPos」變量包含腳本
scriptPos=${0%/*}
它正常工作的電流通路,但有一些更直觀地更換外殼的擴張?
可能重複的文件系統中的位置:
In the bash script how do I know the script file name?Retrive其中一個bash腳本保存
我經常需要一個bash腳本引用其他所需資源的文件系統。通常在shebang行之後使用以下代碼。它設置了一個名爲「scriptPos」變量包含腳本
scriptPos=${0%/*}
它正常工作的電流通路,但有一些更直觀地更換外殼的擴張?
一種選擇是
scriptPos=$(dirname $0)
其需要支付額外過程的成本,但更多的自我描述。如果腳本是在當前直接,輸出不同(好了,在我看來):
#!/bin/bash
scriptPos=$(dirname $0)
echo '$0:' $0
echo 'dirname:' $scriptPos
echo 'expansion:' ${0%/*}
$ bash tmp.bash
$0: tmp.bash
dirname: .
expansion: tmp.bash
UPDATE:解決缺陷的企圖jm666指出。
#!/bin/bash
scriptPos=$(v=$(readlink "$0") && echo $(dirname "$v") || echo $(dirname "$0"))
它包含一個類似我的方式的解決方案。問題是我每次都忘記語法,只能將它從腳本複製並粘貼到腳本中:-D – OkieOth