Bash 命令在不同的目录中获取文件?

Bash 命令在不同的目录中获取文件?

我有一组 bash 脚本,我想将一些常见的 shell 选项和变量声明放入“setup.sh”脚本中,该脚本将在每个脚本的开头获取。
我的目录结构是这样的:

├── includes
│   └── setup.sh
└── server_config
    ├── build_server_core.sh
    ├── install_fail2ban.sh

由于脚本可能在不同的计算机或环境中运行,因此我不能简单地使用硬编码的路径setup.sh

source是否有针对与正在运行的脚本不同的目录中的脚本的单行命令?

答案1

首先获取脚本本身的目录,然后使用相对路径,如下所示:

DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source "$DIR/../includes/setup.sh"

有关查找正确目录的更多信息,请查看https://stackoverflow.com/questions/59895

答案2

作为单行:双重嵌套目录名也获取父级。(启发这里

source $( dirname $( dirname "${BASH_SOURCE[0]}" ) )/_helperlib.sh

答案3

echo "$( echo $(cd ../ && pwd) )/includes/setup.sh"

或者

ParDir="$( echo $(cd ../ && pwd) )/includes/setup.sh"

echo $ParDir

相关内容