如何从python脚本内部获取bash脚本设置的环境变量?

索林

我确实有一个setenv.sh脚本,脚本在其他几个脚本的开头被调用,其中大多数是bash脚本。显然,此脚本确实设置了一些环境变量,这些脚本稍后会为用户使用。

现在,问题是我想在某些python脚本中实现相同的行为,并且我发现,如果您运行setenv,则不会更新python脚本的环境。

因为我不想创建另一个脚本,该脚本首先调用setenv.shmyscript.py,另一个调用此myscript.py-我正在寻找一种方法来说服python加载这些变量(解析seteve.h不是一个选择……因为更复杂)。

最简单的解决方案显然是您不需要的解决方案,它是为每个python脚本创建一个新的脚本文件。

但是,您可以通过调用python脚本本身来做大致等效的操作。当然,您需要发信号通知它不要在第二次调用时执行此操作,否则最终将导致无限(尾)递归。

下面的小“模块”(您可以将其导入,但您应该在启动之前立即进行操作,然后再进行其他操作)将检查SETENV是否已设置环境变量,如果已设置,它将重新发出python命令(尽其所能,因此,如果它不是简单的脚本执行,则可能会出错)SETENV它缺乏大量的错误检查功能,因此不应该被认为可以投入生产。而是概念证明:

# file env_set.py
import os
import sys

if sys.argv[0] and "SETENV" in os.environ:
  setenv = os.environ["SETENV"]
  del os.environ["SETENV"]
  os.execvp("bash", ["bash", "-c",
        "source " + setenv + "; exec python " + sys.argv[0] + ' "${@}"',
        "--"] + sys.argv[1:])

和一点测试:

# file test_env_set.py
import env_set

import os
import sys
for name in sys.argv[1:]:
  if name in os.environ:
    print(name + "=" + os.environ[name])
  else:
    print("Undefined: " + name)

# file setenv.sh
export the_answer=42

$ python test_env_set.py SETENV the_answer
Undefined: SETENV
Undefined: the_answer
$ SETENV=setenv.sh python test_env_set.py SETENV the_answer
Undefined: SETENV
the_answer=42

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过bash脚本设置系统环境变量?

来自分类Dev

在python脚本中调用bash配置文件以设置环境变量

来自分类Dev

如何使用Shell脚本设置Java环境变量

来自分类Dev

如何通过脚本设置Jenkins环境变量

来自分类Dev

如何从Tcl脚本设置Windows环境变量

来自分类Dev

如何使用Shell脚本设置Java环境变量

来自分类Dev

如何为 Powershell 脚本传入或设置环境变量?

来自分类Dev

通过python脚本设置外壳环境变量

来自分类Dev

Perl脚本,如何从.bash_profile中获取环境变量

来自分类Dev

如何在bash脚本中访问PHP环境变量?

来自分类Dev

Bash:如何从脚本中显示环境变量的内容?

来自分类Dev

从 python 脚本中获取 Jenkins BUILD 环境变量

来自分类Dev

cmake:从脚本设置环境变量

来自分类Dev

在TCL脚本中设置环境变量

来自分类Dev

通过脚本设置环境变量(PATH等)

来自分类Dev

在bash脚本中导入环境变量

来自分类Dev

使用脚本jquery获取环境变量

来自分类Dev

使用脚本jquery获取环境变量

来自分类Dev

如何在python脚本中使用值来设置环境变量

来自分类Dev

如何在travis-ci中设置环境变量并从python脚本访问它们?

来自分类Dev

如何在travis-ci中设置环境变量并从python脚本访问它们?

来自分类Dev

如何在shell中设置环境变量作为python脚本的结果?

来自分类Dev

如何使用python脚本在posix(unix / linux)机器中永久设置环境变量

来自分类Dev

如何访问脚本中sudo / EOF子句中的脚本变量和环境变量... BASH

来自分类Dev

将环境变量传递给 bash 脚本,从函数内部调用

来自分类Dev

如何从bash设置`screen`环境变量?

来自分类Dev

Xcode-在构建阶段从bash脚本设置/添加环境变量

来自分类Dev

如何解决错误“ vncserver:未设置HOME环境变量”-代表用户从PHP运行Python脚本?

来自分类Dev

如何从bash脚本获取python文件的变量

Related 相关文章

  1. 1

    通过bash脚本设置系统环境变量?

  2. 2

    在python脚本中调用bash配置文件以设置环境变量

  3. 3

    如何使用Shell脚本设置Java环境变量

  4. 4

    如何通过脚本设置Jenkins环境变量

  5. 5

    如何从Tcl脚本设置Windows环境变量

  6. 6

    如何使用Shell脚本设置Java环境变量

  7. 7

    如何为 Powershell 脚本传入或设置环境变量?

  8. 8

    通过python脚本设置外壳环境变量

  9. 9

    Perl脚本,如何从.bash_profile中获取环境变量

  10. 10

    如何在bash脚本中访问PHP环境变量?

  11. 11

    Bash:如何从脚本中显示环境变量的内容?

  12. 12

    从 python 脚本中获取 Jenkins BUILD 环境变量

  13. 13

    cmake:从脚本设置环境变量

  14. 14

    在TCL脚本中设置环境变量

  15. 15

    通过脚本设置环境变量(PATH等)

  16. 16

    在bash脚本中导入环境变量

  17. 17

    使用脚本jquery获取环境变量

  18. 18

    使用脚本jquery获取环境变量

  19. 19

    如何在python脚本中使用值来设置环境变量

  20. 20

    如何在travis-ci中设置环境变量并从python脚本访问它们?

  21. 21

    如何在travis-ci中设置环境变量并从python脚本访问它们?

  22. 22

    如何在shell中设置环境变量作为python脚本的结果?

  23. 23

    如何使用python脚本在posix(unix / linux)机器中永久设置环境变量

  24. 24

    如何访问脚本中sudo / EOF子句中的脚本变量和环境变量... BASH

  25. 25

    将环境变量传递给 bash 脚本,从函数内部调用

  26. 26

    如何从bash设置`screen`环境变量?

  27. 27

    Xcode-在构建阶段从bash脚本设置/添加环境变量

  28. 28

    如何解决错误“ vncserver:未设置HOME环境变量”-代表用户从PHP运行Python脚本?

  29. 29

    如何从bash脚本获取python文件的变量

热门标签

归档