bash - 使用 env-cmd 将 bash 环境变量传递到新的 shell
问题描述
我正在尝试使用两个预先存在的 ENV 变量 DOMAIN 和 URL_PREFIX 构建一个环境变量:用于反应应用程序的 PUBLIC_URL。我希望在 npm 脚本中运行“react-scripts build”命令之前这样做。
我正在使用 .env-cmdrc.json 文件将多个环境变量存储在一个地方。我目前正在构建 var 并像这样调用命令。
env-cmd -e shared,staging --use-shell "export PUBLIC_URL=https://$DOMAIN/$URL_PREFIX && react-scripts build"
我正在从包含.env-cmdrc.json
和的“客户端”文件夹中运行命令package.json
。它导致以下错误,表明变量从未扩展。
throw new ERR_INVALID_URL(input);
^
TypeError [ERR_INVALID_URL]: Invalid URL: https:///
at onParseError (internal/url.js:259:9)
at new URL (internal/url.js:335:5)
at getPublicUrlOrPath (/home/nathanielw/.nvm/versions/node/v14.16.0/lib/node_modules/react-scripts/node_modules/react-dev-utils/getPublicUrlOrPath.js:36:28)
at Object.<anonymous> (/home/nathanielw/.nvm/versions/node/v14.16.0/lib/node_modules/react-scripts/config/paths.js:26:25)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18) {
input: 'https:///',
code: 'ERR_INVALID_URL'
}
变量 $DOMAIN 和 $URL_PREFIX 被 react-scripts build 命令很好地使用:env-cmd -e shared,staging react-scripts build
或者只是printenv DOMAIN
,但它们不会出现在其他命令中,例如打印出来echo $DOMAIN
我认为在命令之间传递环境时我遗漏了一些东西,但我不知道为什么env-cmd -e shared,staging printenv DOMAIN
会起作用,但env-cmd -e shared,staging echo $DOMAIN
不会。
解决方案
找到一个相关的问题。我只需要切换到单引号而不是双引号,以防止在运行$DOMAIN
之前评估env-cmd
并设置这些变量。其他一切都很好。
推荐阅读
- c - 如何读取 fseeked 的文件?
- javascript - Ajax 验证在 html 元素内重复 html 页面
- javascript - Gsap 无法与打字稿一起正常工作
- c++ - C ++中数组的大小是否灵活?
- python - 通过pandas列按字符串选择行(有条件)
- python - 具有无法识别的时间格式的 Pandas MultiIndex - 如何转换时间和应用计算
- r - 在带有 conda 环境的 Visual Studio Code 中使用 R
- c# - HttpClient 403 捕获过期的 API 令牌 .Net Core 3.1
- windows - 如何在 Win x64 上的同一个 txt 窗口上运行 Vim?
- excel - Excel VBA 复选框 - 需要将值导出到电子表格