You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在非脚本所在目录执行脚本时输出该脚本的存放路径?

嗨,这事儿好办!要让你的脚本输出它自己的存放目录,得用能获取脚本绝对路径的方法——毕竟你可能用不同的方式运行它(比如绝对路径、相对路径)。这里有两种靠谱的实现方式:

这是Linux系统下最常用的方案,还能处理符号链接的情况:

在你的abc.sh里添加以下代码:

#!/bin/bash
# 获取脚本的完整绝对路径(自动解析符号链接)
full_script_path=$(readlink -f "$0")
# 从完整路径中提取脚本所在的目录
script_dir=$(dirname "$full_script_path")
# 输出目标路径
echo "$script_dir"

简单解释下:

  • $0代表脚本本身的名称/路径,你用绝对路径运行时它就是绝对路径,用相对路径运行时就是相对路径;
  • readlink -f "$0"会把$0解析成真实的绝对路径,哪怕脚本是符号链接也能正确指向原始文件的位置;
  • dirname则从完整路径里剥离出目录部分,也就是你要的/home/path/to/script。
方法2:用realpath(更简洁)

如果你的系统支持realpath命令(大部分现代Linux发行版都自带),可以用更简洁的写法:

#!/bin/bash
script_dir=$(realpath "$(dirname "$0")")
echo "$script_dir"

逻辑很直观:

  • dirname "$0"先拿到脚本所在的相对/绝对目录;
  • realpath直接把这个路径转换成绝对路径,一步到位得到你需要的结果。
避坑提醒

别直接用dirname "$0"!如果哪天你用相对路径运行脚本(比如sh ../script/abc.sh),dirname "$0"只会返回../script这种相对路径,而上面两种方法都能确保输出的是完整的绝对目录。

内容的提问来源于stack exchange,提问作者bosari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:45:17