所以我有一个想在 Windows PowerShell 中运行的程序。在 cmd 中我只需输入script.cmd
,它就会运行脚本。在 PowerShell 中我显然必须执行./script.cmd
。
BASH 默认的行为类似。要更改 BASH 的行为,您需要执行export PATH=$PATH:.
,然后script.sh
才能工作,而不仅仅是./script.sh
。
我的问题是...我该如何script.cmd
在 PowerShell 中工作?我必须做类似的事情吗export PATH=$PATH:.
?我echo $PATH
在 PowerShell 中做了,但没有输出任何内容。
答案1
首先,阅读一下get-help about_command_precedence
以了解其工作原理。
接下来,输入$env:path
以查看当前的 PATH。
您可以像这样将目录附加到 PATH:$env:path += ";C:\Scripts"
您还可以将当前目录附加到 PATH,如下所示:$env:path += ";."
get-item env:
将显示所有环境变量。
答案2
如果你想永久地这样做,这就是我所做的。
(我不会在路径中添加 .,而是尝试添加您当前所在的目录)
例如,您可以自己编辑注册表。
$oldpath = (Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).path
$newpath = "$oldpath;$($pwd.Path)"
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $newPath
#final check
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).Path
当然,你需要管理员权限。所以,如果你不是管理员,让我们找到另一种方法,powershell 为你提供了另一种方法来执行此操作,如下所示:
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";$($pwd.Path)", "User")