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

IntelliJ外部工具执行source .sh脚本失败,请求协助排查

解决IntelliJ中执行Shell脚本配置环境变量的问题

我来帮你搞定这个问题,咱们先理清楚出错的原因,再给出正确的配置方式:

为什么会出现bin/bash: source: No such file or directory?

source是Bash的内置命令,不是一个独立的可执行程序。你在IntelliJ里配置外部工具时,如果犯了这两个错误,就会触发这个报错:

  • 直接把source当成「Program」来设置(IntelliJ会把它当成独立程序去查找,自然找不到);
  • 用了不支持source的Shell(比如/bin/sh,它对应的命令是.而不是source),或者调用Bash的参数写法不对。

而且还有个隐藏坑:就算你搞定了source的报错,单独的外部工具进程里的环境变量不会传递给后续的Spring Boot运行/调试进程,因为每个进程的环境变量是相互独立的。所以咱们得换个思路来配置。

正确的配置方法(让环境变量生效)

我们需要把加载脚本和启动Spring Boot放在同一个Shell进程里执行,这样脚本里的环境变量才能被Spring Boot读取到。具体步骤如下:

  1. 打开Run/Debug配置:点击IntelliJ右上角的运行/调试下拉菜单,选择Edit Configurations...
  2. 在配置列表里找到你的Spring Boot项目配置(通常是Spring Boot类型,名字对应你的主类)
  3. 修改「Command line」字段:
    原来的内容一般是spring-boot:run,替换成以下命令:
    bash -c "source /path/to/my/script/file/myscriptfile.sh && mvn spring-boot:run"
    
    如果你想用更兼容POSIX Shell的写法,也可以改成:
    sh -c ". /path/to/my/script/file/myscriptfile.sh && mvn spring-boot:run"
    
  4. 保存配置,然后点击调试/运行按钮就可以了。

这样脚本里的export变量会先被加载到当前Shell环境,接着启动Spring Boot服务,应用就能正常读取这些环境变量了。

可选验证方式

你可以在Spring Boot代码里加一行打印,确认环境变量是否加载成功:

System.out.println("目标服务URL:" + System.getenv("你的变量名"));

启动后看控制台输出,就能验证变量是否正确读取了。

内容的提问来源于stack exchange,提问作者mR.Angular

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:18:58