← 全部文章

技术与生活 / 一篇记录

脚本明明在同一目录,为什么找不到文件?

从终端启动、被定时任务启动和被另一个脚本调用,得到的工作目录可能完全不同。打开相对路径时,系统不会替你寻找脚本旁边的文件,而是从进程当前目录解析。

先明确这里的区别

相对路径以当前目录为起点,脚本所在目录不一定是运行目录。

以下示例面向常见 GNU/Linux 环境,文件名为实验用占位名称。

pwd

怎样判断处理正确

从两个目录执行并比较输出,理解相对路径为何改变。

先记录 pwd 的输出,再把同一个相对路径写成绝对路径比较。如果绝对路径可读而相对路径失败,就应修正路径来源,而不是继续修改文件权限。

另一个容易忽略的情况是脚本中途执行了 cd。入口处的 pwd 正确,并不能证明后续打开文件时仍在同一目录。将路径计算集中到入口,再把绝对路径传给函数,通常更容易追踪。

需要留意的是,需要稳定定位资源时,应明确传入目录或先计算脚本路径。

参考:Linux 文档。

搜索文章

输入关键词,找回一篇记录。