You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让调用Python脚本的Bash脚本获取Python设置的变量?

解决Bash脚本向Python传递变量的问题

你猜的没错!Bash父进程和它启动的Python子进程确实拥有独立的运行环境——子进程会继承父进程的环境变量,但子进程对环境的修改不会反向影响父进程,而且如果父进程没把变量明确导出,子进程根本看不到它。

下面给你两种靠谱的实现方式:

方法1:导出Bash变量到全局环境

在Bash脚本里先把变量用export命令导出,这样后续启动的Python进程就能继承到这个环境变量:

Bash脚本示例(比如叫run_python.sh)

# 定义变量并导出到环境
export VarFromFirstScript="Hello from Bash!"
# 调用你的Python脚本
python3 myPythonScript.py

Python脚本(myPythonScript.py)读取变量

import os

# 安全读取环境变量(用get避免变量不存在时抛出KeyError)
var_value = os.environ.get('VarFromFirstScript')
if var_value:
    print(f"成功获取Bash传递的变量:{var_value}")
else:
    print("未找到VarFromFirstScript环境变量")

方法2:临时传递环境变量(不污染全局环境)

如果不想把变量导出到整个Bash会话的环境里,可以在调用Python的命令行前临时设置变量,这种方式只对当前Python进程生效:

Bash脚本示例

# 临时设置变量并启动Python,仅本次命令有效
VarFromFirstScript="临时传递的变量值" python3 myPythonScript.py

Python脚本的读取方式和方法1完全一样,不用修改。

为什么你之前的方法没生效?

你尝试在Python里执行os.environ['VarFromFirstScript'] = VarFromFirstScript,这里有两个核心问题:

  1. 如果Bash里没导出这个变量,Python进程的环境里根本没有VarFromFirstScript,直接赋值只是在Python自己的环境里新增了一个变量,和Bash完全无关;
  2. 就算你在Python里修改了环境变量,也只会影响Python进程本身,不会回传给父Bash进程——进程间的环境是单向继承的,子进程无法修改父进程的环境。

内容的提问来源于stack exchange,提问作者RSHAP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:23:35