当前位置: 首页 > 面试题库 >

为什么在python中设置的环境变量不能持续存在?

漆雕和昶
2023-03-14
问题内容

我希望编写python脚本,通过在要执行一些模拟代码的任何目录中运行该脚本来创建一些适当的环境变量,并且我读到我无法编写脚本来使这些环境变量持久存在于其中。
Mac OS终端。有两件事:

这是真的?

看起来这将是一件有用的事情;为什么一般不可能呢?


问题答案:

您无法通过python做到这一点,但是一些聪明的bash技巧可以做类似的事情。基本理由是:每个进程的内存空间中都存在环境变量。使用fork()创建新进程时,它将继承其父级的环境变量。当在shell(例如bash)中设置环境变量时,如下所示:

export VAR="foo"

您正在执行的操作是告诉bash将其进程空间中的变量VAR设置为“
foo”。当您运行程序时,bash使用fork(),然后使用exec()来运行该程序,因此,从bash运行的任何内容都会继承bash环境变量。

现在,假设您要创建一个bash命令,该命令使用您当前目录中名为“ .data”的文件中的内容设置一些环境变量DATA。首先,您需要使用命令从文件中获取数据:

cat .data

打印数据。现在,我们要创建一个bash命令以在环境变量中设置该数据

export DATA=`cat .data`

该命令获取.data的内容,并将其放入环境变量DATA中。现在,如果将其放在别名命令中,则有一个bash命令可以设置环境变量:

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

您可以将该别名命令放在主目录的.bashrc或.bash_profile文件中,以使该命令在您启动的任何新bash shell中可用。



 类似资料:
  • 问题内容: 全局变量在Python中如何工作?我知道全局变量是有害的,我只是在做实验。 这在python中不起作用: 我收到一个错误: 我究竟做错了什么? 问题答案: 您需要声明: 在Python中, 您分配的 变量默认情况下成为局部变量。您需要使用将它们声明为全局变量。另一方面,您 引用但未分配的 变量不会自动成为局部变量。这些变量指的是封闭范围内最接近的变量。 Python 3.x引入了类似于

  • 问题内容: 我需要在python脚本中设置一些环境变量,并且我希望从python调用的所有其他脚本(shell脚本)(将是子进程)来查看设置的环境变量。该值为数字。 如果这样做,它会抱怨说1必须是字符串。我也想知道一旦设置它,如何在python(在脚本的后半部分)中读取环境变量。 问题答案: 你可能需要考虑其他方面的代码健壮性; 当你将整数值的变量存储为环境变量时,请尝试 然后为了进行检索,请考虑

  • 问题内容: 我有一个bash脚本,用于设置环境变量并运行命令 现在,我想使用python代替bash,因为我想计算传递给命令的一些参数。 我试过了 和 其次是 但由于未设置LD_LIBRARY_PATH,因此程序总是放弃。 我怎样才能解决这个问题? 感谢帮助! (如果我在调用python脚本之前导出LD_LIBRARY_PATH,则一切正常,但我希望python确定路径并将环境变量设置为正确的值)

  • 我的Python程序有问题。在IDE(间谍IDE)上运行此程序时,我没有得到任何错误,并且它工作得很好。否则,如果我在python IDLE中运行它,我会得到以下错误。 我认为这个错误与Python路径环境变量有关,因为我找不到该模块。

  • 我在Ubuntu中安装JDK有困难,我不能让它工作。谁能让我知道我做错了什么? 1-我从Oracle的网站下载了jdk-6u35-linux-i586.bin 2-我将下载的文件移到了家里/ 3-我使用chmod+x jdk-6u35-linux-i586.bin将其转换为可执行文件 4-我使用sudo./jdk1.6.0_35执行它 5-我使用mv jdk1.6.0_35//usr/local/

  • 问题内容: 有没有一种方法可以在Linux中使用C设置环境变量? 我尝试了和,但是它们似乎并没有为我工作。 问题答案: 我将在这里做出一个疯狂的猜测,但是这些功能似乎不起作用的正常原因不是因为它们不起作用,而是因为用户并不真正了解环境变量的工作原理。例如,如果我有此程序: 然后我从外壳程序运行它,它不会修改外壳程序的环境- 子进程无法做到这一点。这就是为什么内置可修改环境的shell命令的原因,以