Shell 获取当前脚本的绝对路径

请注意:本文编写于 ,其中某些信息可能已经失去时效性。

1. dirname + pwd

1
root_absolute_dir=$(cd "$(dirname "$0")";pwd)
1
root_absolute_dir=$(dirname $(readlink -f "$0"))

注意

macOS 中使用 readlink -f 命令会有如下报错:

1
2
readlink: illegal option -- f
usage: readlink [-n] [file ...]

可以安装 greadlink 代替 readlink

1
2
3
4
# 这里仅提供使用 Homebrew 安装方法
brew install greadlink
# 可以修改 bash_profile 文件,添加 alias readlink=greadlink
# 使用 greadlink 代替 readlink

参考

  1. 10km:bash shell:获取当前脚本的绝对路径(pwd/readlink)
  2. orientlu:shell 当前工作目录的绝对路径
  3. macos - 如何在Mac上获取GNU的readlink -f的行为?