Ubuntu系统下Intellij外部工具运行sh文件提示Command not found怎么解决
问题原因
IntelliJ 运行外部工具时启动的子进程,不会默认加载你终端登录时自动读取的 shell 配置文件(如 /etc/profile、~/.bashrc 等),导致 fake-smtp-server 命令所在的目录未被包含在运行时的 PATH 环境变量中,因此抛出 Command not found 报错。
解决方案
以下三种方案任选其一即可:
方案1:脚本中使用命令的绝对路径
- 先在正常运行的 Ubuntu 终端中执行以下命令,获取
fake-smtp-server的完整绝对路径:
终端会返回类似which fake-smtp-server/usr/bin/fake-smtp-server或/usr/local/bin/fake-smtp-server的路径。 - 将脚本中的
fake-smtp-server替换为上述查询到的完整路径即可,修改后脚本示例:echo 'Runs a fake smtp server' /usr/local/bin/fake-smtp-server
方案2:脚本开头补全环境变量
在脚本开头增加加载 shell 配置或补充 PATH 的逻辑,示例:
# 加载当前用户的bash配置,导入完整的环境变量 source ~/.bashrc echo 'Runs a fake smtp server' fake-smtp-server
也可以直接把命令所在目录追加到PATH中:
# 路径替换为你通过which查询到的命令所在的父目录 export PATH=$PATH:/usr/local/bin echo 'Runs a fake smtp server' fake-smtp-server
方案3:修改IntelliJ外部工具的环境变量配置
不需要修改脚本,直接在IntelliJ的外部工具配置页中找到「Environment variables」选项,将你终端中echo $PATH输出的完整值填入,或者在原有PATH值末尾追加fake-smtp-server所在的目录即可。
验证方法
可在脚本中增加一行echo $PATH,分别在终端和IntelliJ中运行脚本,对比两次输出的PATH差异,即可确认是否是环境变量缺失导致的问题。
内容的提问来源于stack exchange,提问作者César Castro Aroche
相关产品推荐
相关产品推荐

