我意識到採購腳本並執行腳本的唯一區別是在後一種情況下,父級環境保持不受影響。採購腳本並在KornShell上執行腳本時行爲上的差異
考慮此示例腳本:
SETUP_DIR=`dirname $0`
echo $SETUP_DIR
echo $0
echo $1
上述腳本只是取運行腳本的目錄名。雖然試圖採購它,上面的腳本失敗,出現以下錯誤
$ . test.sh foo
dirname: invalid option -- k
Try `dirname --help' for more information.
-ksh
foo
什麼,似乎對我來說,採購它的時候,作爲腳本父環境shell中運行,外殼名作爲傳遞的原因第一個參數,在這種情況下它的-ksh
。因爲-k
,這是dirname
奇怪的是無效選項的
和dirname -ksh
失敗,這個問題是不存在的SH或bash
$ sh
sh-3.2$ . test.sh foo
.
sh
foo
sh-3.2$ bash
bash-3.2$ . test.sh foo
.
bash
foo
bash-3.2$
- 所以我想知道運行的同時,它是KornShell(ksh)中已知的已記錄行爲嗎?如何解決這個問題?
- 我的第二個通用的問題是,爲什麼
dirname 'sh'
返回當前目錄.
我無法重現你的錯誤。 'dirname -ksh'是否適合你? '哪個dirname'給你什麼? – dogbane
@dogbane:'dirname -ksh'不起作用,並在我的問題中提到失敗。我在問題本身已更新的其他相關信息。 – Abhijit