在VSCode中的任务(task.json)中为WSL设置环境变量

17

我尝试为在Windows子系统Linux中运行的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": "test env",
            "type": "shell",
            "command": "echo",
            "args": [
                "$test"
            ],
            "options": {
                "env": {
                    "test": "test_string"
                }
            }

        },
    ]
}

输出结果为:
> Executing task in folder ex12-test: echo $test <



Terminal will be reused by tasks, press any key to close it.

请注意,默认情况下,Shell 已经手动修改为 WSL 的 C:\WINDOWS\SysNative\bash.exe,如这里这里所推荐的那样。

1
请参考环境变量未找到。在您的情况下,您需要使用$env:test - Mark
@Mark 谢谢!我改成了 ${env:test},但还是不行。看起来环境变量根本没有设置。 - Yuxiang Wang
1
@YuxiangWang 答案在这里:(https://dev59.com/H6_la4cB1Zd3GeqPrFKD#56887403)。你不能在 tasks.json 任务定义的“args”或“command”中引用以此方式设置的环境变量。 - njappboy
2个回答

19

选项对象在任何任务之外,所以:

format
  "version": "2.0.0",
  "options": {
      "env": {
        "test": "test_string"
      }
   }
   "tasks": [
    {
        "label": "test env",
        "type": "shell",
        "command": "echo",
        "args": [
            "$env:test"
        ],
    },

然后可以像这样访问选项参数:

$env:test  or    ${env:test}
]

5
只有当我使用"$test"而不是"$env:test"时,它才对我有效。 - juanmah
那么,无法仅为特定任务设置环境变量吗? - godo
@godo 可能在这里实现:https://code.visualstudio.com/Docs/editor/tasks#_custom-tasks。看起来您需要向特定任务添加一个“options”对象。 - Thomas Bui

6
我最终为我的 VS Code(v1.67.1)所做的是:
  • 将我的环境变量添加到 settings.json
  • 使用传统的 %ENV_VAR% 选项。
因此,在 settings.json 中创建以下内容:
{
  "terminal.integrated.env.windows": { // switch to your os, check `Open Workspace Settings` in the Command Pallete then search for `environment`
    "AWS_REGION": "us-east-2", 
    "AWS_ID": "my_id"
  }
}

tasks.json 中使用正确的环境变量引用: "command": "echo %AWS_REGION%"

1
在 tasks.json 中,只有这个命令对我起作用:"command": "echo ${env:AWS_REGION}"这取决于所使用的 shell。 - Mattia72

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接