[英]python 3: How to source a bash script and run it in same shell
[英]How to run a shell script as source using python to set environment variables?
我创建了一个 shell 脚本,用于设置环境变量。 我正在尝试通过 python 脚本运行此脚本,但每次都显示错误为“找不到命令”。 我想运行 shell 脚本作为设置环境变量的源。
Python : 2.7.5
Script Name : abc.sh
Normal Execution on shell : source abc.sh
尝试使用
python : os.system ("source abc.sh")
这显示了一个错误
"Command not found".
任何人都可以帮助我如何通过 python 成功运行此脚本作为源代码?
错误是因为source
是 shell“内置”命令——它不是 $PATH 中的外部命令。 但更根本的问题是,由于环境变量的工作方式,您尝试做的事情将无法正常工作。
环境变量对每个进程都是私有的。 它们不是全局的,一个进程不能修改不同进程的环境变量; 至少不是没有其他进程的合作。 当您启动一个进程时,它会继承父进程的环境变量的副本,或者父进程向它产生的子进程提供一组显式的环境变量。 无论哪种情况,每个进程都有自己的私有环境变量。 所以即使你做了
os.system("sh -c 'source abc.sh'")
它只会修改sh
子进程的环境变量。 它不会修改 python 进程的环境。
最简单的解决方案是启动 shell,执行source abc.sh
,然后exec
您的 python 程序。 如果您绝对必须通过在 python 程序中运行 shell 脚本来设置环境变量,则您的脚本必须将变量写入标准输出。 然后,您的 python 程序将必须读取 output 并对其进行解析以提取环境变量名称和值,然后调用os.putenv()
在 python 进程中设置每个变量。
在命令提示符下尝试您的命令。 这是因为您没有在命令 python: os.system ("source abc.sh") 中定义 os。 您的计算机无法访问 os.system。 您首先需要安装其中 os.system 模块的 python 的软件包。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.