Ich habe einige Umgebungsvariablen in/etc/profile gesetzt, ich kann sie von bash aus aufrufen, aber aus irgendeinem Grund kann ich sie nicht von Go bekommen.Umgebungsvariable kann nicht von/etc/profile in GoLang kommen
/etc/profile:
echo $TEST_ENV
test_me
ich diese Variable nicht von GO
os.Getenv("TEST_ENV") // returns ""
Wenn ich Liste der Zugriff auf:
...
TEST_ENV=test_me
ich es von bash zugreifen können Verfügbare Umgebungsvariablen mit
os.Environ()
Ich sehe nicht, die Variable ich suche, aber es gibt ein paar Variablen, die helfen könnten:
SHELL=/bin/sh
USER=root
LOGNAME=root
Ich denke, mein Problem zu verschiedenen Sitzungen und Muscheln verwandt ist, so dass ich sogar versucht, läuft
exec.Command("source /etc/profile")
und erhalten Sie die Variablen nach, aber es gibt immer noch nichts zurück.
Können Sie mir einige Tipps geben, wie Sie Umgebungsvariablen erhalten, wenn sie in/etc/profile eingestellt sind? Ich würde es vorziehen, sie aus dieser Datei zu holen, aber wenn nötig, kann ich die Variablen auch an einen anderen Ort bringen.
Umgebungsvariablen sind * nicht * "erhalten [...] von [...] Datei". Noch nie. Dies sind Umgebungsvariablen und wenn die Umgebung die Variable enthält, können Sie darauf zugreifen. Sie müssen sicherstellen, dass Ihre ausführbare Go-Datei in einer Umgebung ausgeführt wird, in der TEST_ENV festgelegt ist. Wenn TEST_ENV in Ihrer lokalen Bash gesetzt ist und Sie Ihre Go-Binärdatei von dieser Bash ausführen, wird die Umgebung * an Ihre Binärdatei weitergegeben und Sie * haben * Zugriff darauf. Zeigen Sie, wie Sie Ihre Binärdatei ausführen. Beachten Sie, dass dieses Problem völlig unabhängig von Go ist: Sie rufen einfach Ihre Binärdatei ohne eine geeignete Umgebung auf. – Volker