WSL2中source执行Bash脚本静默失败,但直接执行代码正常的问题求助
WSL2中source执行Bash脚本静默失败,但直接执行代码正常的问题求助
我碰到了一个挺棘手的问题,想请大家帮忙分析下原因:
我写了一段Bash脚本,主要功能是解析JSON配置文件来导出环境变量,同时定义了一个日志函数。这个脚本在原生Ubuntu 22.04LTS环境下用. funcs.sh(也就是source命令)执行完全没问题,但到了Windows 11的WSL2里这么运行时,居然静默失效了——没有任何错误提示,但环境变量没被正确设置,日志函数也没创建出来。
但奇怪的是,如果我把脚本里的核心代码行直接复制粘贴到WSL2的bash命令行里执行,一切又都正常工作,环境变量能正确导出,函数也能正常使用。
下面是我的脚本内容(通过. funcs.sh调用):
#!/bin/bash . mode.sh # load config JSON as env vars (export) eval $(cat config.json | jq -r ".${MODE}"' | to_entries | .[] | "export " + .key + "=\"" + .value + "\""') # DELIM is set here because it is static in daily_import_header.sql: export "DELIM"=";" # logging to graylog server log() { APPNAME="SPAR" # assumes LOG_SERVER to be set by eval # if [ "${LOG_SERVER}" eq "" ]; then # ...(后续代码省略) }
备注:内容来源于stack exchange,提问作者Gnudiff
相关产品推荐
相关产品推荐

