我希望在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)
}
那就是马上退出。
答案 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())