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

本文介绍了如何在shell脚本中利用dirname, pwd和readlink命令获取脚本的绝对路径,以便于管理和配置相关资源。通过实例演示了如何递归解析符号链接,确保正确定位文件路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 功能说明

通过shell脚本启动服务时,往往需要获取到当前脚本的绝对路径,再依据该绝对路径获取一些配置文件、静态库等的路径,为此,在shell脚本中拿到该脚本的绝对路径是很有用的。

2. 相关shell命令

2.1 dirname

返回文件目录名:

$ dirname path

例如:

$ dirname /a/b/c # 或者 $ dirname /a/b/c/
/a/b
$ dirname a/b/c  # 或者 $ dirname a/b/c/
a/b
$ dirname a  # 或者 $ dirname a/
.
$ dirname /  # 或者 $ dirname //
/

2.2 pwd

print working directory:

$ pwd

2.3 readlink

打印解析后的符号链接(symbol link)。

SOURCE=$(readlink "$SOURCE")

3. 最终实现

#!/usr/bin/env bash

SOURCE=$0 # $0 is the shell name, maybe absolute path, relative path or symbolic link
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
  SCRIPT_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
  SOURCE="$(readlink "$SOURCE")"
  [[ $SOURCE != /* ]] && SOURCE="$SCRIPT_DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
SCRIPT_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"  # script absolute path
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值