%20%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B.png)
Windows PowerShell で実行したいプログラムがあります。cmd では、入力するだけscript.cmd
でスクリプトが実行されます。PowerShell では、どうやら を実行する必要があるようです./script.cmd
。
BASH はデフォルトで同様に動作します。BASH の動作を変更するには、 を実行する必要がありexport PATH=$PATH:.
、その後はscript.sh
ではなく が機能します./script.sh
。
script.cmd
私の質問は... PowerShell で動作させるにはどうすればよいかということです。 と同様の操作を行う必要がありますかexport PATH=$PATH:.
? PowerShell で実行しましたecho $PATH
が、何も出力されませんでした。
答え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")