linux - 从任何目录运行脚本

标签 linux bash shell ubuntu

是否可以从任何目录运行 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/

相关文章:

bash - 如何清空$的值? .bashrc 中的变量?

linux - Tar 当前目录中的 100 个目录

shell - Unix 目录问题

c++ - __cxa_finalize 和 __attribute__

linux - rabbitmqadmin socket.error : [errno 104] connection reset by peer

php - OOM Killer - 仅杀死 PHP 实例

bash - `sudo mysqldump` 返回 0 字节

linux - 创建一个 .tar.bz2 文件 Linux

Java进程执行 "tail -f test.log | grep abc"无法得到任何输出

linux - 如何在 find 命令中删除两个目录