如何在 bash 中获取通过 $PATH 执行的脚本的绝对路径? [复制]
Posted
技术标签:
【中文标题】如何在 bash 中获取通过 $PATH 执行的脚本的绝对路径? [复制]【英文标题】: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。但结果不是我所期望的。我得到了调用脚本的目录的绝对路径。
如何获取脚本所在的绝对路径?
非常感谢。
【问题讨论】:
【参考方案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”命令应该会找到它。
【讨论】:
以上是关于如何在 bash 中获取通过 $PATH 执行的脚本的绝对路径? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在linux shell(bash)编程中,如何通过递归方式遍历文件
linux shell脚本如何获取“当前工作路径”,“执行脚本所在路径”,“执行脚本所在路径和执行路径的相对路径”?(当前目录)