%20%D0%BA%20%D0%BF%D1%83%D1%82%D0%B8%20%D0%B2%20powershell.png)
Итак, у меня есть программа, которую я хочу запустить в 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")