Bash golang如何获取环境变量PS1?
PS1是bash提示符的环境变量。我可以通过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 要在子流程中专门设置它变量是否已实
echo$PS1
我尝试使用getPS1
,但没有返回任何内容:
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
vsset
的更详细解释。这是特定于sh/bash的。csh系列shell(包括zsh?)的语法与前者不同,后者是可移植的、与shell无关的,实现后者的方法是env VAR=val命令…
PS1=$PS1 app