#1613·direnv

`direnv export pwsh` 会删除 PowerShell 7 上的现有 `PATH` 环境变量

作者: tkyggit创建于 2026年8月21日更新于 2026年8月21日
标签Bug

“ direnv 导出 pwsh” 删除了 PowerShell 7 上现有的“ PATH” 环境变量

□ 说明

在带PowerShell 7.6.2的Windows上,使用PowerShell钩子使已存在的"PATH"环境变量在输入包含".envrc"的目录时变为空.

通过直接运行 " direnv导出pwsh " 和评估其输出,可以不使用钩子而复制同样的行为。

□ 环境

  • OS: 视窗
  • 动力壳: 7.6.2
  • 格伦夫:2.37.1

□再现.

创建 “.envrc” :

导出 TEST=测试

然后运行 :

prinv 允许 Invoke-Express "$(direnv hook pwsh)" (美国英语). cd C:\tools\direnv 测试

输入目录后 :

$v: 派特

为空。

这个问题也可直接取自 " direnv export pwsh " 的产出。

在评价产出之前,`env:PATH'包含预期值。

运行 :

导出 = & prinv 导出 pwsh Invoke-Express (出-并 [环境]::新线)

后来:

$v: 派特

为空。

□ 已观测到 `direnv export pwsh' 输出

输出包含命令, 例如 :

删除项目 - LiteralPath 'env:/Path'

还载有:

${env: PATH}\ C:\ 程序文件\ Git\ mingw64\bin;...'

其他环境变量也有类似的条目,例如:

删除项目 - LiteralPath 'env:/ systemDrive' ${env:Systemdrive}'C:'

删除项目 - LiteralPath 'env:/ systemRoot' ${env:SySTEMROOT}>'C:\WINDOWS'(英语:WINDOWS)

删除项目 - LiteralPath “ env: / ProgramFiles” ${env: PROGRAMFILES}\ C:\ 方案文件}

删除项目 - LiteralPath 'env:/ComSpec' ${env:COMSPEC}>'C:\WINDOWS\ system 32\cmd.exe" (中文(简体) ).

□ 预期行为

评价以下产出:

prenv 导出 pwsh

当出口环境仍包含“PATH”等现有环境变量值时,不应使该变量消失。

特别是,输入目录应保存可用的`PATH':

$v: 派特

应继续包含现有的适宜卫生技术条目,以及`.envrc'作出的任何改动。

□ 注释

我不确定根本原因是什么。

所产生的产出既包括 " 撤回项目 " 业务,也包括环境变量的任务,这些变量的名称在外壳上有所不同,但我不想假定这就是问题的根源。

这个问题可以从 " direnv export pwsh " 本身的原始产出中复制出来,因此,它似乎并非是PowerShell钩装置所特有的。

我希望得到指导,说明这是否是预期的行为,如果不是,则说明产生的`撤回-项目 ' 业务的来源.