获取正在执行 Shell 脚本的绝对路径

您所在的位置:网站首页 shell中readlink 获取正在执行 Shell 脚本的绝对路径

获取正在执行 Shell 脚本的绝对路径

#获取正在执行 Shell 脚本的绝对路径| 来源: 网络整理| 查看: 265

背景

在使用 Shell 脚本的过程中,经常有获取脚本位置的需求,比如操作与脚本相对位置的资源。但是在实际获取时存在各种问题,网上的资料也常常有所偏颇,比如:

执行方式不同带来的差异,如通过当前 Shell 来执行,即以 source 脚本文件 或 . 脚本文件 的方式执行,导致不能以 $0 来获取 pwd 命令只能获取当前工作路径,跟脚本位置无关 一些通过改变当前路径的方式,会导致影响执行环境,不理想 操作系统的差异,如:macOS 或 Linux

本文的方法适用于 bash、sh 两种 Shell。

解决方案 # 获取 Bash 脚本所在目录绝对路径 SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) readonly SCRIPT_DIR # 获取 Bash 脚本文件完整绝对路径 SCRIPT_FILE=$SCRIPT_DIR/$(basename "${BASH_SOURCE[0]}") readonly SCRIPT_FILE # 测试 echo "${BASH_SOURCE[0]}" echo "$SCRIPT_DIR" echo "$SCRIPT_FILE" 备选方案

Linux 系统通过 readlink 来获取脚本文件完整路径,但是 macOS 系统的 readlink 没有 -f 参数,所以也可以通过 brew install coreutils 安装 greadlink 的方式解决。

参考资料

解决MacOS下readlink: illegal option -- f

The Right Way to Get the Directory of a bash Script

How to Get Bash Script’s Own Path

How to get script name, script path within the bash script in Linux

(完)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3