在 PowerShell 或 cmd 中读取环境变量会产生不同的结果

Jam*_*esD 4 windows environment-variables

我一直对 Windows 7 中的环境变量问题感到困惑。

我们有一个 Jenkins 服务器,它无法在环境变量中找到 SSH 密钥%HOME%,因为它想要访问路径:

/c/users/jenkins
Run Code Online (Sandbox Code Playgroud)

但是如果我使用

echo %HOME%
Run Code Online (Sandbox Code Playgroud)

作为我的 Jenkins 用户在正常的命令提示符窗口中,结果是

C:\users\jenkins
Run Code Online (Sandbox Code Playgroud)

但是,如果我在 Windows PowerShell 中使用环境命令,我也会得到

/c/user/jenkins
Run Code Online (Sandbox Code Playgroud)

在可从系统属性 - 高级标签 -> 环境访问的普通 GUI 中,我得到以下内容

C:\users\jenkins
Run Code Online (Sandbox Code Playgroud)

我已尝试将它们设置回来,但问题仍然存在。就 Jenkins 获得的输出而言,与 PowerShell 相同。

我该如何将它们设置回来?(并不是说cmd和Windows系统认为它们设置错误。)访问相同的环境变量到底是如何得到不同的输出的?有没有办法可以实现这种情况?它们存储在哪里,以便我可以手动编辑它们的存储位置?

Ben*_*all 5

正如 @Luis 的评论中提到的,该env命令不是 PowerShell 的一部分。它可能是由您安装的其他一些实用程序集提供的,旨在模拟Linuxenv命令

要在 PowerShell 中引用环境变量,请使用$env:<variable-name>语法或环境提供程序 - Get-Content env:\<variable-name>

要设置环境变量,您可以使用$env:<variable-name> = "<variable-value>"

有关更多信息,请尝试help about_Environment_Variables在 PowerShell 中运行。