Search code examples
linuxbashexportenvironment

Changing environment variable of a running process


I have a script that exports an environment variable and starts some subscripts.

export LOGLEVEL="1"
/home/myuser/bin/myscript1.sh
/home/myuser/bin/myscript2.sh

LOGLEVEL is available to the processes started from the subscripts. How can I change the environment variable LOGLEVEL?

I have tried to set the variable with export LOGLEVEL="5" but that`s not working.


Solution

  • In general, you can only influence a process's environment variables at the time the process starts up. If you need to communicate a change to a running process, the environment isn't the right tool.

    However, this question has some answers that suggest ways to overcome this limitation.

    Edited to add in light of discussion in the question's comments: A fairly good way of communicating occasionally changing setup to a running process is to designate a configuration file where the LOGLEVEL value is set, send a SIGHUP to the process, and have the process reread the configuration file upon receipt of SIGHUP.