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

Ubuntu服务器中Bash脚本无法读取全局变量VARIABLE__CRED求助

问题排查方案

核心原因分析

脚本报错VARIABLE__CRED: unbound variable,说明执行脚本的子进程中未找到该变量。手动在终端能读取,是因为变量仅存在于当前shell会话,但未传递给pnpm启动的子进程。

排查步骤

  • 检查变量是否导出
    在~/.bash_profile中定义变量时,必须添加export关键字才能将其转为环境变量,供子进程读取。修改内容为:

    export VARIABLE__CRED="my-token"
    

    保存后重新执行source ~/.bash_profile,再启动项目。

  • 确认脚本执行shell类型
    检查bin/getData脚本第一行是否指定bash解释器:

    #!/bin/bash
    

    如果缺少该行,系统可能默认用sh执行,而sh不会继承bash的非导出变量。添加该行后确保脚本可执行(chmod +x bin/getData)。

  • 排查脚本严格模式影响
    如果脚本中启用了set -u(或set -o nounset),会对未定义变量直接报错。可以在脚本开头添加变量存在性检查:

    if [ -z "${VARIABLE__CRED:-}" ]; then
        echo "Error: VARIABLE__CRED is not set"
        exit 1
    fi
    

    或者临时注释set -u行验证是否是严格模式导致的报错。

  • 强制传递变量到pnpm进程
    若上述方法无效,可在启动命令前显式传递变量:

    VARIABLE__CRED="$VARIABLE__CRED" pnpm start
    
  • 验证变量是否传入子进程
    在bin/getData脚本开头添加以下命令,执行后查看输出,确认变量是否存在:

    env | grep VARIABLE__CRED
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:10:08