我想做的是将文件中的设置包含在我当前的交互式bash shell中,如下所示:

$。/path/to/some/dir/.settings

问题在于.settings脚本还需要使用“。”。运算符以包括其他文件,如下所示:

。 .extra_settings

如何在.settings文件中引用.extra_settings的相对路径?这两个文件始终存储在同一目录中,但是此目录的路径将有所不同,具体取决于这些文件的安装位置。

运算符(operator)始终知道/path/to/some/dir/,如上所示。 .settings文件如何知道其安装目录?我宁愿没有一个安装过程来记录已安装目录的名称。

最佳答案

我相信$(dirname "$BASH_SOURCE")会做您想要的,只要您要采购的文件是而不是一个符号链接(symbolic link)。

如果您正在采购的文件可能是符号链接(symbolic link),则可以执行以下操作来获取真实目录:

PRG="$BASH_SOURCE"
progname=`basename "$BASH_SOURCE"`

while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
        PRG="$link"
    else
        PRG=`dirname "$PRG"`"/$link"
    fi
done

dir=$(dirname "$PRG")

关于linux - 当bash脚本源自时,如何知道它的安装目录。运算符(operator)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/421772/

10-11 15:45