编写可访问相对于它的文件的shell脚本的最佳方法是什么,而无论我从哪里调用它都无关紧要? “简单”是指最简单/推荐的方法,可在不同的系统/ shell 之间使用。
示例
假设我有一个~/MyProject
文件夹,其中包含子文件夹scripts/
和files/
。在scripts/
中,我有一个shell脚本foo.sh
,它想要访问files/
中的文件:
if [ -f "../files/somefile.ext" ]; then
echo "File found"
else
echo "File not found"
fi
如果我执行
cd ~/MyProject/scripts && ./foo.sh
,它将可以正常工作,但是如果使用cd ~/MyProject && scripts/foo.sh
,它将失败。 最佳答案
您通常可以这样做:
mydir="$(dirname $0)"
获取运行脚本的目录。
然后只需使用它来找到您的文件。