adicionando cwd / pwd / (.) ao caminho no PowerShell

adicionando cwd / pwd / (.) ao caminho no PowerShell

Tenho um programa que gostaria de executar no Windows PowerShell. No cmd, basta digitar script.cmde o script será executado. No PowerShell, aparentemente, tenho que fazer ./script.cmd.

O BASH se comporta de forma semelhante por padrão. Para mudar o comportamento do BASH você precisa fazer export PATH=$PATH:.e então script.shfuncionará em vez de apenas ./script.sh.

Minha pergunta é... como posso script.cmdtrabalhar no PowerShell? Eu tenho que fazer algo semelhante a export PATH=$PATH:.? Eu fiz echo $PATHno PowerShell, mas não resultou em nada.

Responder1

Em primeiro lugar, leia get-help about_command_precedencepara ver como isso funciona.

Em seguida, digite $env:pathpara visualizar seu PATH atual.

Você pode anexar um diretório ao PATH assim:$env:path += ";C:\Scripts"

Você também pode anexar o diretório atual ao PATH assim:$env:path += ";."

get-item env:mostrará todas as variáveis ​​de ambiente.

Responder2

Se você quiser fazer isso permanentemente, é isso que eu faço.

(E em vez de adicionar . ao caminho, tentarei adicionar o diretório atual em que você está agora)

Você pode, por exemplo, editar o registro sozinho.

$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

Claro que você precisa de direitos de administrador para isso. Então, vamos encontrar outra maneira se você não for administrador, e o PowerShell oferece outra maneira de fazer isso, assim:

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";$($pwd.Path)", "User")

informação relacionada