如何执行 shell 内置命令

How to execute a shell built-in command

我试图查明 Linux 上是否存在某个程序,我发现了这个 article。我尝试从我的 go 程序执行它,它一直给我一个错误,说它在我的 $PATH 中找不到 "command",这是可以预料的,因为它是 linux 中的内置命令,并且不是二进制文件。所以我的问题是如何从 go 程序中执行 linux 的内置命令?

exec.Command("command", "-v", "foo")

错误:执行:"command":在 $PATH

中找不到可执行文件

正如那篇文章所说,"command" 是一个 shell 内置。您可以通过 exec.LookPath.

在本地执行此操作

如果必须,您可以使用系统 which 二进制文件,或者您可以从 shell、

中执行 command
exec.Command("/bin/bash", "-c", "command -v foo")

或者,如果它是不需要参数的内置命令,您可以执行如下操作:

package main

import (
    "fmt"
    "log"
    "os/exec"
)

func main() {
    out, err := exec.Command("uuidgen").Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%s", out)
}

这将打印出如下所示的唯一 ID:4cdb277e-3c25-48ef-a367-ba734ce407c1 就像直接从命令行调用它一样。