【问题标题】:How can I get absolute path to a script executed via ${PATH} in bash? [duplicate]如何在 bash 中获取通过 ${PATH} 执行的脚本的绝对路径? [复制]
【发布时间】:2017-05-04 17:46:42
【问题描述】:

我想获得执行脚本的绝对路径。 它的路径是/use/local/lib/debugger.sh。 它是通过 $PATH=/use/local/lib 从另一个文件夹调用的。 我搜索了一个示例脚本并找到了以下一个。

echo "path = $(cd $(dirname $0) && pwd)"

我希望我能得到绝对路径,/use/local/lib。但结果不是我所期望的。我得到了调用脚本的目录的绝对路径。

如何获取脚本所在的绝对路径?

非常感谢。

【问题讨论】:

    标签: bash


    【解决方案1】:

    -P 选项添加到pwd 将确保正确解析脚本dirname 中的符号链接(如果有):

    path=$(cd $(dirname $0) && pwd -P)
    

    【讨论】:

    • 这是一个帮助,但它不能解决 OP 想要的问题
    【解决方案2】:

    使用这个:

    #!/bin/bash
    
    path="path = $(cd $(dirname $0) && pwd)"
    script_name="${0##*/}"
    
    echo "${path}/${script_name}"
    

    或者在“oneliner”风格echo "path = $(cd $(dirname $0) && pwd)/${0##*/}"

    【讨论】:

      【解决方案3】:

      如果它确实在您的 $PATH 中,那么“which”命令应该会找到它。

      【讨论】:

        猜你喜欢
        • 2016-08-12
        • 2013-06-26
        • 2022-10-17
        • 1970-01-01
        • 2011-04-24
        • 1970-01-01
        • 2016-03-22
        • 2016-01-09
        • 2019-04-10
        相关资源
        最近更新 更多