我有一组 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