2016-07-20 13 views
0

私はログイン時に別のシェルにユーザーを起動するGoで何かをしようとしています。だから、このアプリケーションはログイン時にいくつかの作業を行い、その後bashシェルにユーザを落としてから、終了したらより多くの作業をして終了します。私はそれをシェルに入れることはできません。Go:bashシェルを起動する方法

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

を働いたものだ後、私は認めなければならないことを把握、I問題を完全に理解していない。シェルに新しいシェルが必要ですか? 正しく理解すると、以下のようなものが役立ちます。 'syscall.Exec(os.Getenv(" SHELL ")、[] string {os.Getenv(" SHELL ")}、syscall.Environ()) ' – noisewaterphd

答えて

1

私はこの問題を十分に理解していません。シェルに新しいシェルが必要ですか?

私が正しく理解していれば、以下のようなものが役立つかもしれない:

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

+0

' Exec() 'は、Goプロセスをシェルで置き換えています。これは通常、プログラムを実行したいと言っている人が何を意味するのではないのですか。 –

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

} 
関連する問題