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中获得完整规范路径的最简单方法是使用cd
和pwd
:
ABSOLUTE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/$(basename "${BASH_SOURCE[0]}")"
使用${BASH_SOURCE[0]}
而不是$0
会产生相同的行为,无论该脚本是作为<name>
还是source <name>
上一篇: Reliable way for a bash script to get the full path to itself?