Go: How to spawn a bash shell

huangapple go评论70阅读模式
英文:

Go: How to spawn a bash shell

问题

我正在寻找一种在Go中实现的方法,可以在登录时将用户启动到另一个shell中。因此,这个Go应用程序将在登录时执行一些工作,然后将用户放入一个bash shell中,在退出时执行更多工作然后退出。我似乎无法进入一个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)
}

这段代码会立即退出。

英文:

I'm looking to do something in Go where I launch the user into another shell on login. So this go app will do some work on login and then drop the user in a bash shell and then on exit do more work then quit. I can't seem to get it into a 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)
}

That just exits right away.

答案1

得分: 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("在Go中运行了一个shell")
    
    }

希望对你有帮助!

英文:

Go figure.. figure it out after I post but here's what worked

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")

}

答案2

得分: 1

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

如果我理解正确,下面的代码可能会有所帮助:

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

英文:

I must admit, I don't fully understand the problem. You need a new shell, in the shell?

If I understand correctly, something like the following might help:

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

huangapple
  • 本文由 发表于 2016年7月21日 00:11:57
  • 转载请务必保留本文链接:https://go.coder-hub.com/38485656.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定