有没有办法我可以在我的shell上设置一个环境变量,并在go程序退出后保持它?我尝试了以下内容
bash-3.2$ export WHAT=am
bash-3.2$ echo $WHAT
am
bash-3.2$ go build tt.go
bash-3.2$ ./tt
am
is your name
bash-3.2$ echo $WHAT
am
bash-3.2$
Run Code Online (Sandbox Code Playgroud)
代码是:
package main`
import (
"fmt"
"os"`
)
func main() {
fmt.Println(os.Getenv("WHAT"))
os.Setenv("WHAT", "is your name")
fmt.Println(os.Getenv("WHAT"))
}
Run Code Online (Sandbox Code Playgroud)
谢谢
不,环境变量只能传递,而不能传递.你正试图做后者.
您的流程树:
`--- shell
`--- go program
|
`--- other program
Run Code Online (Sandbox Code Playgroud)
go程序必须将环境变量传递给shell,以便其他程序可以访问它.
您可以做的是像ssh-agent这样的程序:返回一个字符串,可以解释为设置一个环境变量,然后由shell进行评估.
例如:
func main() {
fmt.Println("WHAT='is your name'")
}
Run Code Online (Sandbox Code Playgroud)
运行它会给你:
$ ./goprogram
WHAT='is your name'
Run Code Online (Sandbox Code Playgroud)
评估打印的字符串将为您提供所需的效果:
$ eval `./goprogram`
$ echo $WHAT
is your name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1738 次 |
| 最近记录: |