如果我有一个使用"../"获取父文件夹的Shell脚本,我是否可以将其扩展为绝对路径?
readlink -f
命令。$ cd /tmp
$ readlink -f ..
/
readlink -f
命令。那么你可以使用cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P
命令。 - jwfearn使用realpath
$ realpath ..
/home
虽然您可以使用stat
来获取目录的完整路径,但也可以使用pwd -P
... 但是,除非您实际上cd
到感兴趣的目录,否则这并没有多大帮助。
为了避免这种限制而不实际更改当前工作目录,我发现只需在子shell中运行该cd
即可:
THIS=`dirname $0` # Which is often "."
PARENT=$(
cd $THIS # At this point, we are sure we're in script's directory
dirname `pwd -P`
)
echo "PARENT=$PARENT"
在使用命令行时:
dirname $(pwd)
在使用 shell 脚本时:
PROJ_DIR=$(dirname $(pwd))