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

Bash脚本sed修改文件正常 运行setup.sh报文件不存在错误

问题根因

报错不是你写的配置修改脚本抛出的,来源是被调用的/setup_script/setup.sh,具体原因:

  • 你编写的外层脚本操作配置文件用的是绝对路径/config/input.env,路径解析不依赖执行时的工作目录,所以前面三次sed修改配置的操作都能正常生效,这部分逻辑没有问题。
  • 报错里访问文件用的是相对路径../config/input.env,Bash 里相对路径的解析基准是执行命令时的当前工作目录,不是脚本文件自身的存放位置:
    • setup.sh的编写逻辑默认假设自己在/setup_script目录下被执行:这种场景下../config/input.env向上一级跳转后刚好对应/config/input.env,路径是正确的。
    • 你当前调用setup.sh的命令是sudo bash /setup_script/setup.sh,执行时的工作目录是你运行外层脚本时所在的目录,不是/setup_script;再加上sudo默认会重置执行环境,把工作目录切换到root用户的家目录(一般为/root),此时从当前工作目录解析../config/input.env根本找不到对应文件,就会触发找不到文件的报错。
修复方法

任选一种即可解决:

  • 调用setup.sh前先切换到脚本所在目录:
cd /setup_script
sudo bash ./setup.sh
  • 在setup.sh开头添加一行命令,强制脚本运行时先切换到自身文件所在目录,后续相对路径就会按预期解析:
cd "$(dirname "$0")"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:12:32