Shell-Script
用 .文件給出“未找到”錯誤
我正在嘗試使用
. file
手冊頁指定的破折號獲取(bash-parlance)文件:. file The commands in the specified file are read and executed by the shell.
但即使文件*在那裡,*我也會收到錯誤消息:
$ ls defaults.sh run.sh $ cat run.sh #!/bin/sh . defaults.sh echo "VAR: $VAR" $ cat defaults.sh VAR=abc $ bash run.sh VAR: abc $ dash run.sh run.sh: 3: .: defaults.sh: not found
當我嘗試
. defaults.sh
使用互動式破折號時,也會發生同樣的事情。我在哪裡錯了?
對於某些shell,您需要
./
在前面放置或絕對路徑:. ./defaults.sh
請注意,您可能要添加腳本的絕對路徑
run.sh
,否則defaults.sh
將來自使用者的位置:SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" . "$SCRIPT_DIR"/defaults.sh
如果從 run.sh 和 defaults.sh 文件所在的目錄執行“dash run.sh”,請嘗試將 $PWD 添加到 PATH。
在我的測試中,我看到了這些結果:
# dash run.sh run.sh: 3: .: defaults.sh: not found
然後我採取了這一步:
# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # export PATH=$PATH:$PWD
將 $PWD 添加到 PATH 後的結果:
# dash run.sh VAR: abc