是否可以从任何目录运行 shell 脚本,但脚本会保留其存储位置的目录上下文。
例如:
/projects/a/bin/myscript.sh
在项目/我有:
- app
- code
- tmp
- bin
- myscript.sh
myscript 在项目应用程序和代码目录中设置一些东西。
我希望能够从任何地方运行安装程序,即:
./bin/setup.sh
或直接在 bin 目录中:
./setup.sh
但上下文似乎取自脚本运行的位置,而不是文件所在的位置。
最佳答案
脚本的路径可以在$0
中找到。这包括脚本名称本身,所以你需要做类似的事情
bin=$(dirname -- "$0")
你可以:
简单地引用使用该变量的其他脚本,例如:
. "$bin/utils.sh" "$bin/../app/app"
等等
进入目录;但这会破坏您在命令行上获得的路径,除非您已将它们设为绝对路径:
cd "$bin"
记得正确引用!
关于linux - 从任何目录运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19115909/