You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Windows环境的GitHub Actions工作流中如何正确使用用户主目录变量?

在GitHub Actions Windows Runner中正确使用用户主目录路径

我来帮你搞定这个问题——在GitHub Actions的windows-latest runner里,确实不能直接照搬本地Windows的环境变量用法,得结合Actions的shell类型来调整:

1. 针对PowerShell步骤(默认shell)

如果你的run步骤用的是默认的PowerShell(GitHub Actions Windows runner默认用PowerShell),直接用$env:USERPROFILE就可以,注意别和Actions的上下文语法搞混。示例:

steps:
  - name: 使用PowerShell访问用户主目录
    run: |
      # 输出用户主目录路径
      Write-Host "用户主目录:$env:USERPROFILE"
      # 比如在主目录下创建文件
      New-Item -Path "$env:USERPROFILE\test.txt" -ItemType File

2. 针对CMD步骤

如果你的步骤指定了shell: cmd,那用%USERPROFILE%完全有效,不需要额外转义。示例:

steps:
  - name: 使用CMD访问用户主目录
    shell: cmd
    run: |
      # 输出用户主目录路径
      echo 用户主目录:%USERPROFILE%
      # 比如在主目录下创建文件
      type nul > %USERPROFILE%\test.txt

3. 如何在Actions上下文(${{ ... }})中使用

如果你想在Actions的上下文表达式里引用用户主目录(比如在env字段、路径参数里),得先把系统环境变量注入到GitHub Actions的env上下文里。可以通过下面的步骤实现:

steps:
  - name: 注入USERPROFILE到Actions上下文
    run: echo "USERPROFILE=$env:USERPROFILE" >> $env:GITHUB_ENV

  - name: 使用上下文变量访问用户主目录
    run: |
      # 现在可以用${{ env.USERPROFILE }}来引用
      Write-Host "上下文里的用户主目录:${{ env.USERPROFILE }}"
      New-Item -Path "${{ env.USERPROFILE }}\test-from-env.txt" -ItemType File

为啥你之前的尝试会失败?

  • 直接用%USERPROFILE%在PowerShell步骤里会失效,因为这是CMD专属语法;
  • ${{ env.USERPROFILE }}为空是因为GitHub Actions不会自动把系统级环境变量加载到env上下文,必须手动注入;
  • 如果在CMD步骤里写$env:USERPROFILE,自然会语法错误——这可是PowerShell的写法啊。

内容的提问来源于stack exchange,提问作者Nicolas Baumann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 12:07:37