`direnv export pwsh` 会删除 PowerShell 7 上的现有 `PATH` 环境变量
“ 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钩装置所特有的。
我希望得到指导,说明这是否是预期的行为,如果不是,则说明产生的`撤回-项目 ' 业务的来源.
内容来源: direnv/direnv