Why can't environmental variables set in python persist?

前端 未结 7 771
南旧
南旧 2020-11-27 03:55

I was hoping to write a python script to create some appropriate environmental variables by running the script in whatever directory I\'ll be executing some simulation code,

7条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-27 04:35

    You can't do it from python, but some clever bash tricks can do something similar. The basic reasoning is this: environment variables exist in a per-process memory space. When a new process is created with fork() it inherits its parent's environment variables. When you set an environment variable in your shell (e.g. bash) like this:

    export VAR="foo"
    

    What you're doing is telling bash to set the variable VAR in its process space to "foo". When you run a program, bash uses fork() and then exec() to run the program, so anything you run from bash inherits the bash environment variables.

    Now, suppose you want to create a bash command that sets some environment variable DATA with content from a file in your current directory called ".data". First, you need to have a command to get the data out of the file:

    cat .data
    

    That prints the data. Now, we want to create a bash command to set that data in an environment variable:

    export DATA=`cat .data`
    

    That command takes the contents of .data and puts it in the environment variable DATA. Now, if you put that inside an alias command, you have a bash command that sets your environment variable:

    alias set-data="export DATA=`cat .data`"
    

    You can put that alias command inside the .bashrc or .bash_profile files in your home directory to have that command available in any new bash shell you start.

提交回复
热议问题