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

Ubuntu下ProcessBuilder调用shell内置命令command报错:文件或目录不存在

问题:Java/Kotlin调用shell内置命令command报错"No such file or directory"

问题背景

在Ubuntu 20.04.5 LTS(JDK 17)环境下,尝试通过Kotlin/Java的ProcessBuilder调用shell内置命令command来检测date命令是否存在,执行代码时触发找不到命令的错误。

复现代码

Kotlin代码

//main.kt
fun main(){
      val proc=ProcessBuilder("command","-v","date").start() //line 37
}

Java代码

import java.io.IOException;
//rough.java
public class rough {
    public static void main(String[] args) throws IOException {
        new ProcessBuilder("command","-v","date").start();
    }
}

报错堆栈

Exception in thread "main" java.io.IOException: Cannot run program "command": error=2, No such file or directory
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
    at MainKt.main(main.kt:37)
    at MainKt.main(main.kt)
Caused by: java.io.IOException: error=2, No such file or directory
    at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
    at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:314)
    at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:244)
    at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1110)
    ... 3 more

前置验证

通过bash确认command是shell内置命令:

user@pc:~$ type command
command is a shell builtin

报错原因

ProcessBuilder的工作逻辑是直接在PATH环境变量指定的目录中查找可执行文件,但command是bash的内置命令——它属于shell进程本身的一部分,并非独立存在于文件系统中的可执行程序,因此系统无法找到对应的文件,从而抛出"No such file or directory"错误。

解决方案

要执行shell内置命令,必须通过启动shell进程(如bash),让shell来解析并执行该内置命令。修正后的代码如下:

Kotlin修正版

//main.kt
fun main(){
    val proc = ProcessBuilder("bash", "-c", "command -v date").start()
}

Java修正版

import java.io.IOException;
//rough.java
public class rough {
    public static void main(String[] args) throws IOException {
        new ProcessBuilder("bash", "-c", "command -v date").start();
    }
}

其中bash -c "command -v date"的作用是:启动bash shell进程,并让它执行引号内的完整命令字符串,此时shell会识别并执行内置的command命令。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:40:49