我发现设置PATH环境变量只影响旧的命令提示符.PowerShell似乎有不同的环境设置.如何更改PowerShell(v1)的环境变量?
注意:
我希望永久更改我的更改,因此每次运行PowerShell时都不必设置它.PowerShell有配置文件吗?像Unix上的Bash配置文件?
如果我有一个运行PowerShell ISE的实例,我安装了修改PATH的东西,或者我在PowerShell之外以任何方式修改它,那么我需要重新启动PowerShell才能看到更新的PATH变量.
有没有办法从PowerShell中重新加载路径而不重新启动它?
我们可以使用这里setx讨论的.
setx PATH "%PATH%;C:\Something\bin"
Run Code Online (Sandbox Code Playgroud)
但是这个命令只能更改为用户PATH变量而不是系统变量.
我们如何制定类似的系统范围命令?

我在PowerShell周围的数组和双引号中发现了一些奇怪的行为.如果我在数组中创建并打印第一个元素,例如:
$test = @('testing')
echo $test[0]
Output:
testing
Run Code Online (Sandbox Code Playgroud)
一切正常.但如果我在它周围加上双引号:
echo "$test[0]"
Output:
testing[0]
Run Code Online (Sandbox Code Playgroud)
仅评估了$ test变量,并且数组标记[0]被字面上视为字符串.简单的解决方法是避免在双引号中插入数组变量,或者首先将它们分配给另一个变量.但是这种行为是设计的吗?
我通过适用于 Windows 的 AWS 的 msi 安装程序安装了 AWS SAM。运行安装程序后,我sam --version在cmd和powershell中运行。
PS C:\Users\dgupta> sam --version
SAM CLI, version 1.26.0
Run Code Online (Sandbox Code Playgroud)
它返回我刚刚安装的版本。然而,在 VS Code 中,我打开了一个终端并运行sam --version它,结果出现错误。
PS C:\Users\dgupta> sam --version
SAM CLI, version 1.26.0
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?VS Code 终端和普通终端不能访问相同的环境变量吗?
windows powershell path-variables visual-studio-code aws-sam-cli
我正在尝试在我的 powershell 脚本中设置环境变量。
这是我的代码片段。它设置系统环境变量(系统属性>环境变量>路径)但是,我无法在powershell中启动rabbitmq-service。
'$ENV:PATH' 命令输出没有新添加的路径。系统重新启动后 $ENV:PATH 包含新路径,但命令“rabbitmq-service”仍然不起作用。
# SET Erlang and RabbitMQ Home Path
$ERLANG_HOME = "$env:PROGRAMFILES\erl9.2"
[System.Environment]::SetEnvironmentVariable("ERLANG_HOME", $ERLANG_HOME, "Machine")
$ERTS_HOME = "$env:PROGRAMFILES\erts-9.2"
[System.Environment]::SetEnvironmentVariable("ERTS_HOME", $ERTS_HOME, "Machine")
$RABBITMQ_HOME = "$env:PROGRAMFILES\RabbitMQ Server\rabbitmq_server-3.6.11"
[System.Environment]::SetEnvironmentVariable("RABBITMQ_HOME", $RABBITMQ_HOME, "Machine")
# Add Erlang and RabbitMQ to Path
$System_Path_Elems = [System.Environment]::GetEnvironmentVariable("PATH", "Machine").Split(";")
if (!$System_Path_Elems.Contains("$RABBITMQ_HOME\sbin") -and !$System_Path_Elems.Contains("$ERLANG_HOME\bin") -and !$System_Path_Elems.Contains("$ERTS_HOME\bin"))
{
$newPath = [System.String]::Join(";", $System_Path_Elems + "$ERLANG_HOME\bin" + "$ERTS_HOME\bin" + "$RABBITMQ_HOME\sbin")
[System.Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")
}
Run Code Online (Sandbox Code Playgroud)
如果我在我的脚本中使用 $env:PATH 设置 PATH,它会起作用。
$env:Path += ";C:\\Program Files\\erl9.2\\erts-9.2\\bin;
C:\\Program Files\\RabbitMQ Server\\rabbitmq_server-3.6.11\\sbin;C:\\Program Files\\erl9.2\\bin"
Run Code Online (Sandbox Code Playgroud)
我能够毫无问题地执行以下命令。
rabbitmq-service …Run Code Online (Sandbox Code Playgroud)