Bash golang如何获取环境变量PS1?

Bash golang如何获取环境变量PS1?,bash,go,environment-variables,Bash,Go,Environment Variables,PS1是bash提示符的环境变量。我可以通过echo$PS1 我尝试使用getPS1,但没有返回任何内容: package main import ( "fmt" "os" ) func main() { fmt.Println(os.Getenv("PS1")) } 为什么会发生这种情况?我应该如何解决? 谢谢。PS1可能没有导出,这意味着它不会出现在bash的子进程中 试一试 在运行应用程序之前 你也可以这样做 PS1=$PS1 app 要在子流程中专门设置它变量是否已实

PS1是bash提示符的环境变量。我可以通过
echo$PS1

我尝试使用get
PS1
,但没有返回任何内容:

package main

import (
  "fmt"
  "os"
)

func main() {
  fmt.Println(os.Getenv("PS1"))
}
为什么会发生这种情况?我应该如何解决?
谢谢。

PS1可能没有导出,这意味着它不会出现在bash的子进程中

试一试

在运行应用程序之前

你也可以这样做

PS1=$PS1 app

要在子流程中专门设置它

变量是否已实际设置?清单
os.Environ
是否显示了一个
PS1=value
对?我可以通过
echo$PS1
获得它。您是否正在使用同一用户启动该过程(我指的是运行go程序)?是的。我发现我不能通过
env | grep PS1
获得PS1,但可以通过
set | grep PS1
获得它。有什么区别吗?是的,
set
查看shell本地变量和环境变量,
env
只查看环境变量(传递给子进程)。如果您在
env
中没有看到它,那么您的go程序将无法使用它,您需要正确地导出它。您可以检查SO以了解
env
vs
set
的更详细解释。这是特定于sh/bash的。csh系列shell(包括zsh?)的语法与前者不同,后者是可移植的、与shell无关的,实现后者的方法是
env VAR=val命令…
PS1=$PS1 app