【发布时间】:2014-07-13 05:27:17
【问题描述】:
因此,在编写 bash/sh 脚本时,我在变量中获得了一个路径,其中包含以下内容:
$SOMEPATH=/usr/lib64/pkgconfig/../..
如何将 $SOMEVAR 转换为将“..”文件夹转换为此值的完整绝对路径?:
$SOMEFULLPATH=/usr
谢谢
【问题讨论】:
标签: bash shell path sh relative-path
因此,在编写 bash/sh 脚本时,我在变量中获得了一个路径,其中包含以下内容:
$SOMEPATH=/usr/lib64/pkgconfig/../..
如何将 $SOMEVAR 转换为将“..”文件夹转换为此值的完整绝对路径?:
$SOMEFULLPATH=/usr
谢谢
【问题讨论】:
标签: bash shell path sh relative-path
你可以使用readlink:
readlink -f "$SOMEPATH"
-f, --canonicalize
canonicalize by following every symlink in every component of
the given name recursively; all but the last component must
exist
-m, --canonicalize-missing
canonicalize by following every symlink in every component of
the given name recursively, without requirements on components
existence
【讨论】:
与@devnull 的答案类似,我推荐readlink,但是-m 选项不需要文件路径的任何部分已经存在,这样更灵活。readlink -m $SOMEFULLPATH
【讨论】: