在CentOS 5主机上(使用bash 3.2.32),我们使用Ruby(1.8.7)来实现
ENV['AWS_foo-bar_ACCESS_KEY'] = xxxxx
Run Code Online (Sandbox Code Playgroud)
然后,使用bash,我们运行一个shell脚本:
BUCKET_NAME=$1
AWS_ACCESS_KEY_ID_VAR="AWS_${BUCKET_NAME}_ACCESS_KEY_ID"
AWS_ACCESS_KEY_ID="${!AWS_ACCESS_KEY_ID_VAR}"
export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
Run Code Online (Sandbox Code Playgroud)
这在CentOS 5上运行良好.
但是,在CentOS 6上(使用bash 4.1.2),我们得到了错误
-bash: export: `AWS_foo-bar_ACCESS_KEY_ID=xxxxx': not a valid identifier
Run Code Online (Sandbox Code Playgroud)
我们的理解是,这失败了,因为-变量名中不允许这样做.但是为什么这个工作在bash 3.2而不是bash 4.1?
我想在远程 Linux PC 上为嵌入式目标交叉编译一个项目,但它需要环境设置。
我有一个环境设置脚本。我可以在远程 Linux PC 上的 shell 中运行此脚本,它可以正确设置我的环境变量。构建脚本使用这些环境变量并在本地成功构建。
我使用远程 SSH 扩展通过 Visual Studio Code 连接到 PC。我似乎无法在外部 Visual Studio Code 中构建。即使我通过任务设置了环境,也没有设置环境变量。因此构建脚本无法找到正确的路径。
这是我的tasks.json文件:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "env",
"type": "shell",
"command": "source",
"args": ["/opt/fslc-framebuffer/2.5-qt/environment-setup-armv7at2hf-neon-fslc-linux-gnueabi"]
},
{
"label": "qmake frontend",
"type": "shell",
"command": "/opt/fslc-framebuffer/2.5-qt/sysroots/x86_64-fslcsdk-linux/usr/bin/qmake",
"args": ["${workspaceFolder}/frontend/frontend.pro", "-config", "release", "CONFIG+=imx6ul-linux"],
"problemMatcher": [
"$gcc"
],
},
{
"label": "build frontend",
"dependsOn": [
"env",
"qmake frontend"
],
"dependsOrder": …Run Code Online (Sandbox Code Playgroud)