相关疑难解决方法(0)

为什么不能在bash 4.1.2中访问带破折号的环境变量?

在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?

bash shell centos

5
推荐指数
1
解决办法
1941
查看次数

如何使用 Visual Studio Code 任务在远程 SSH Linux 计算机上使用 source 命令设置环境

我想在远程 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)

environment-variables visual-studio-code

5
推荐指数
1
解决办法
421
查看次数