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
相关产品推荐
相关产品推荐

