Globally set environment variable from within golang

(Madan) #1

I want to globally set the environment variable from my golang code which can be accessed by anything on my OS. For now I have 2 options neither of them fits my situation

  1. use os.Setenv(key, value) - This only sets the variable in the context of code, once the code ends, I see the variable’s old value
  2. use penv package (source: - This doesn’t work for some operating systems like OpenBSD (unix-like OS) because it uses API to get the processes and it does not have openBSD and netBSD support however freeBSD works

I am looking forward to your input

Thanks in advance!

(Norbert Melzer) #2

You need to change your operating system then. Under Unixes changes to the environment are only possible for the current process and it’s children.

(Madan) #3

Thanks for your reply, I am building something for different people and I can’t enforce my users to use some specific OS :slight_smile:

(Norbert Melzer) #4

Then you are probably out of luck.

Also even windows does not change the environment of already started children after changing the own environment, you always need to trigger a refresh in the child.

So you need to find another way for IPC. The Environment variables are not suitable for that.