PowerShellで環境変数PATHにパスを追加・削除・置換する

# PowerShellで環境変数PATHを追加・削除・置換する

複数のバージョンのアプリをインストールしておき、**環境変数PATH** の変更だけでバージョンを切り替えて起動させたいときなど、

システム設定の **環境変数PATH** には保存しておかずに、起動した **PowerShell** の中だけで **環境変数PATH** を置き換えたいことが良くあるのですが、

たまにしか操作しないとすぐに忘れてしまうので、
**PowerShell** で **環境変数PATH** に（一時的にパスを）追加・削除・置換する方法を忘備録としてまとめてみました。

|項目|コマンド|
|---|---|
|表示|\$ENV:Path<BR>\$ENV:Path.Split(";")|
|追加(先頭)|\$ENV:Path="追加したいパス;"+\$ENV:Path<BR>または<BR>Set-Item Env:Path "追加したいパス;\$ENV:Path"|
|追加(末尾)|\$ENV:Path+=";追加したいパス"<BR>または<BR>Set-Item Env:Path \$Env:Path";追加したいパス"|
|削除|Set-Item ENV:Path \$ENV:Path.Replace("削除したいパス;", "")|
|置換|Set-Item ENV:Path \$ENV:Path.Replace("置換前のパス;", "置換後のパス;")|

## 解説
[1. 環境変数PATHを表示する](https://qiita.com/gx3n-inue/items/00ee48996e973050a440#1-%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0path%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B)
[2. 環境変数PATHに新たなパスを追加する](https://qiita.com/gx3n-inue/items/00ee48996e973050a440#2-%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0path%E3%81%AB%E6%96%B0%E3%81%9F%E3%81%AA%E3%83%91%E3%82%B9%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B)
[3. 環境変数PATHの一部を削除する](https://qiita.com/gx3n-inue/items/00ee48996e973050a440#3-%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0path%E3%81%AE%E4%B8%80%E9%83%A8%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B)
[4. 環境変数PATHの一部を置換する](https://qiita.com/gx3n-inue/items/00ee48996e973050a440#4-%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0path%E3%81%AE%E4%B8%80%E9%83%A8%E3%82%92%E5%88%A5%E3%81%AE%E3%83%91%E3%82%B9%E3%81%AB%E7%BD%AE%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%8B)

## 1. 環境変数PATHを表示する

**PowerSehll** では以下の操作で **環境変数PATH** の内容を確認できます。

```PowerShell:PowerShell
PS C:\> $ENV:Path
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Users\username\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\Java\jre1.8.0_241\bin;
C:\Program Files\Java\jdk-13.0.2\bin;C:\Users\username\go\bin;C:\Programs\Microsoft VS Code\bin;C:\Program Files (x86)\sakura;
```

文字列としてそのまま表示すると、パスごとの区切りが見ずらいので、
出力結果を **Splitメソッド** を使って **";"** で分離して表示すると見やすくなります。

```PowerShell:PowerShell
PS C:\> $ENV:Path.Split(";")
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem
C:\Windows\System32\WindowsPowerShell\v1.0\
C:\Users\username\AppData\Local\Microsoft\WindowsApps
C:\Program Files (x86)\Java\jre1.8.0_241\bin
C:\Program Files\Java\jdk-13.0.2\bin
C:\Users\username\go\bin
C:\Programs\Microsoft VS Code\bin
C:\Program Files (x86)\sakura
```

## 2. 環境変数PATHに新たなパスを追加する

以下のコマンドを実行すると、**環境変数PATH** の末尾に、一時的にパスを追加することができます。
パスの末尾には、区切り文字の **";"** を入れ忘れないように注意してください。

### 2-1. 先頭に追加

```
$ENV:Path="追加したいパス;"+$ENV:Path
```

または、

```
Set-Item Env:Path "追加したいパス;$ENV:Path"     <--- $ENV:Pathも含めて""で囲むこと
```

### 2-2. 末尾に追加

```
$ENV:Path+=";追加したいパス"
```

または、

```
Set-Item Env:Path $Env:Path";追加したいパス"     <--- ""で囲むのは追加したいパスのみで良い
```

## 3. 環境変数PATHの一部を削除する

**環境変数PATH** の中から一部のパスを削除したい場合は、
削除したいパスの文字列を **Replaceメソッド** を使って **空文字列""** に置換し、
**Set-Itemコマンドレット** を使って再セットすると良いでしょう。

```
Set-Item ENV:Path $ENV:Path.Replace("削除したいパス;", "")
```

## 4. 環境変数PATHの一部を別のパスに置き換える

**環境変数PATH** の中から一部のパスを置き換えたい場合は、
置き換えたいパスの文字列を **Replaceメソッド** を使って新たなパスに置換し、
**Set-Itemコマンドレット** を使って再セットすると良いでしょう。

```
Set-Item ENV:Path $ENV:Path.Replace("置換前のパス;", "置換後のパス;")
```