繁体   English   中英

如何使用 python 将 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM