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

双击执行Shell删除脚本提示文件不存在,如何修改指定执行路径?

解决Shell脚本双击执行时工作目录不对的问题

嗨,这个问题我太熟悉啦!当你双击运行Shell脚本时,系统默认的工作目录并不是脚本所在的文件夹,而是你的用户主目录(比如/home/你的用户名),这就导致脚本里的rm命令去错误的目录找文件,自然会报“No such file or directory”啦。

给你两种靠谱的解决办法,首推第一种,灵活性拉满:

方法一:强制脚本切换到自身所在目录

在脚本最开头加上一段代码,先获取脚本的绝对路径,再切换到该目录,之后再执行删除命令。修改后的完整脚本如下:

#!/bin/bash
# 获取脚本所在的绝对路径,避免相对路径的坑
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
# 切换到脚本所在的目录
cd "$SCRIPT_DIR"

# 执行你的删除操作
rm *.ext1 *.ext2 file1.txt file2.txt

简单解释下这段代码:

  • ${BASH_SOURCE[0]}:会返回当前脚本的完整路径(不管是双击还是终端运行)
  • dirname:提取路径里的目录部分(去掉脚本文件名)
  • cd "$(dirname ...)" && pwd:进入这个目录后输出绝对路径,确保路径是正确的
  • &> /dev/null:把可能的错误输出(比如目录不存在)屏蔽掉,避免干扰

方法二:给文件指定绝对路径(不推荐,灵活性差)

如果你不想改目录,也可以直接把要删除的文件换成绝对路径,比如:

#!/bin/bash
rm /path/to/your/script/folder/*.ext1 /path/to/your/script/folder/*.ext2 /path/to/your/script/folder/file1.txt /path/to/your/script/folder/file2.txt

但这种方法的问题是,一旦你移动了脚本的位置,就得手动修改路径,非常麻烦,所以还是第一种方法更香。

最后再提一句:如果脚本还没加执行权限,记得用chmod +x 你的脚本名.sh给它加上,不过你终端能正常运行的话应该已经弄好啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:31:04