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

为何使用find -exec执行source命令失败?

问题原因解析
  • source是Shell内置命令,而非外部可执行文件
    find的-exec参数要求后续必须是一个能独立运行的外部程序(比如ls、cat这类在系统PATH中可找到的可执行文件),但source是Bash自带的内置命令,没有对应的独立可执行文件。所以find会在系统路径中查找名为source的文件,自然找不到,从而抛出No such file or directory错误。

  • for循环写法在当前Shell进程内执行
    for f in $(find ${settings_base} -type f); do source "${f}"; done的整个循环逻辑是在你当前的Bash会话中运行的,source作为当前Shell的内置命令,直接由当前Shell解析执行,不需要去外部查找可执行文件,因此能正常加载指定的配置文件。

如果想用类似find -exec的方式实现需求,可以显式调用Bash来执行source命令,示例如下:

find ${settings_base} -type f -exec bash -c 'source "$0"' {} \;

此时find调用的是外部可执行的bash程序,再由bash去执行内置的source命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:22:03