如何在bash中获取通过$ {PATH}执行的脚本的绝对路径?

时间:2016-12-19 16:03:15

标签: bash

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

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

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

如何获得脚本存在的绝对路径?

非常感谢。

3 个答案:

答案 0 :(得分:1)

使用此:

#!/bin/bash

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

echo "${path}/${script_name}"

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

答案 1 :(得分:1)

如果它真的在你的$ PATH中,那么“which”命令应该找到它。

答案 2 :(得分:1)

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

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