Go:如何生成一个bash shell

时间:2016-07-20 16:11:57

标签: go

我希望在Go中执行某些操作,然后在登录时将用户启动到另一个shell中。所以这个应用程序将在登录时做一些工作,然后将用户放在bash shell中,然后在退出时做更多工作然后退出。我似乎无法把它变成一个壳。

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    proc := exec.Command("/bin/bash")
    out, e := proc.StdoutPipe()
    proc.Start()
    fmt.Println("Ran a shell in go")

    fmt.Println(out)
    fmt.Println(e)
}

那就是马上退出。

2 个答案:

答案 0 :(得分:2)

去图...我发布后想出来但是这里有什么用的

package main

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

func main() {
    shell := exec.Command("/bin/bash")
    shell.Stdout = os.Stdout
    shell.Stdin = os.Stdin
    shell.Stderr = os.Stderr
    shell.Run()
    fmt.Println("Ran a shell in go")

}

答案 1 :(得分:1)

我必须承认,我不完全理解这个问题。你需要一个新的shell,在shell中吗?

如果我理解正确,以下内容可能有所帮助:

syscall.Exec(os.Getenv("SHELL"), []string{os.Getenv("SHELL")}, syscall.Environ())