Mehrere Exec-Befehle in derselben Shell ausführen golang

Ich habe Probleme herauszufinden, wie ich mit dem Paket os / exec mehrere Befehle ausführen kann. Ich habe das Netz und den Stapelüberlauf überprüft und nichts gefunden, was für mich in Frage kommt. Hier ist meine Quelle:

package main

import (
    _ "bufio"
    _ "bytes"
    _ "errors"
    "fmt"
    "log"
    "os"
    "os/exec"
    "path/filepath"
)

func main() {
    ffmpegFolderName := "ffmpeg-2.8.4"
    path, err := filepath.Abs("")
    if err != nil {
        fmt.Println("Error locating absulte file paths")
        os.Exit(1)
    }

    folderPath := filepath.Join(path, ffmpegFolderName)

    _, err2 := folderExists(folderPath)
    if err2 != nil {
        fmt.Println("The folder: %s either does not exist or is not in the same directory as make.go", folderPath)
        os.Exit(1)
    }
    cd := exec.Command("cd", folderPath)
    config := exec.Command("./configure", "--disable-yasm")
    build := exec.Command("make")

    cd_err := cd.Start()
    if cd_err != nil {
        log.Fatal(cd_err)
    }
    log.Printf("Waiting for command to finish...")
    cd_err = cd.Wait()
    log.Printf("Command finished with error: %v", cd_err)

    start_err := config.Start()
    if start_err != nil {
        log.Fatal(start_err)
    }
    log.Printf("Waiting for command to finish...")
    start_err = config.Wait()
    log.Printf("Command finished with error: %v", start_err)

    build_err := build.Start()
    if build_err != nil {
        log.Fatal(build_err)
    }
    log.Printf("Waiting for command to finish...")
    build_err = build.Wait()
    log.Printf("Command finished with error: %v", build_err)

}

func folderExists(path string) (bool, error) {
    _, err := os.Stat(path)
    if err == nil {
        return true, nil
    }
    if os.IsNotExist(err) {
        return false, nil
    }
    return true, err
}

Ich möchte den Befehl wie ich vom Terminal würde.cd path; ./configure; make Also muss ich jeden Befehl der Reihe nach ausführen und warten, bis der letzte Befehl beendet ist, bevor ich weitermache. In meiner aktuellen Version des Codes heißt es derzeit, dass./configure: no such file or directory Ich nehme an, das liegt daran, dass cd path ausgeführt wird und in einer neuen Shell ./configure ausgeführt wird, anstatt sich im selben Verzeichnis wie beim vorherigen Befehl zu befinden. Irgendwelche Ideen?AKTUALISIERE Ich habe das Problem behoben, indem ich das Arbeitsverzeichnis geändert und anschließend die ./configure-Anweisung ausgeführt und den Befehl make @ ausgeführt hab

err = os.Chdir(folderPath)
    if err != nil {
        fmt.Println("File Path Could not be changed")
        os.Exit(1)
    }

Noch jetzt bin ich gespannt, ob es eine Möglichkeit gibt, Befehle in derselben Shell auszuführen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage