bash脚本获得完整路径的可靠方法?

这个问题在这里已经有了答案:

  • 从50个答案中获取Bash脚本的源代码目录

  • 下面是我想到的(编辑:加上sfstewman,levigroker,Kyle Strand和Rob Kennedy提供的一些调整),这似乎大多符合我的“更好”的标准:

    SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
    

    SCRIPTPATH行似乎特别迂回,但我们需要它而不是SCRIPTPATH=`pwd` ,以便正确处理空格和符号链接。

    还要注意的是,深奥的情况,比如执行非可访问文件系统中的文件的脚本(这是完全可能的),并不适合那里(或者我见过的任何其他答案)。


    我很惊讶realpath命令在这里没有提到。 我的理解是它被广泛地移植/移植。

    你的初始解决方案变成

    SCRIPT=`realpath $0`
    SCRIPTPATH=`dirname $SCRIPT`
    

    并且根据您的偏好留下未解决的符号链接:

    SCRIPT=`realpath -s $0`
    SCRIPTPATH=`dirname $SCRIPT`
    

    我发现在bash中获得完整规范路径的最简单方法是使用cdpwd

    ABSOLUTE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/$(basename "${BASH_SOURCE[0]}")"
    

    使用${BASH_SOURCE[0]}而不是$0会产生相同的行为,无论该脚本是作为<name>还是source <name>

    链接地址: http://www.djcxy.com/p/1669.html

    上一篇: Reliable way for a bash script to get the full path to itself?

    下一篇: Bash script absolute path with OSX