在 PowerShell 中利用别名快速调用不同版本的 Java
milkory 🐇

当电脑上安装有多个版本的 Java 时,要切换它们通常很麻烦,而 PowerShell 中的别名功能就可以很方便的直接调用它们。

别名

PowerShell 中的别名(Alias)允许用户为常用的命令设置便于记忆的名称,如 PowerShell 中的 ls 命令实际上是 Get-ChildItem 的别名。您可以使用 Get-Aliasgal(即前者的别名)来获取可用的别名列表。

1
2
3
4
5
6
7
PS C:\Windows\system32> Get-Alias ls

CommandType Name Version Source
----------- ---- ------- ------
Alias ls -> Get-ChildItem


您还可以使用 Set-Aliassal 来设置别名。

1
2
3
4
5
6
7
8
9
PS C:\Users\Admin> Set-Alias java11 "C:\Program Files\Java\jdk-11.0.12\bin\java.exe"
PS C:\Users\Admin> java11 -version
java version "11.0.12" 2021-07-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.12+8-LTS-237)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.12+8-LTS-237, mixed mode)
PS C:\Users\Admin> java -version
java version "17.0.1" 2021-10-19 LTS
Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing)

然而,在退出 PowerShell 之后,此前设置的别名也会失效。我们可以通过用户配置文件解决这个问题。

用户配置文件

在 PowerShell 中使用 $profile 来获取用户配置文件位置。

1
2
PS C:\Users\Admin> $profile
C:\Users\Admin\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

如果该文件不存在,可以通过 New-Item 来进行创建。

1
2
3
4
5
6
7
8
9
10
11
12
13
PS C:\Users\Admin> Test-Path $profile
False
PS C:\Users\Admin> New-Item $profile


目录: C:\Users\Admin\Documents\WindowsPowerShell


Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2021/12/25 10:13 0 Microsoft.PowerShell_profile.ps1


使用任意文本编辑器打开该文件,这里使用的是 Visual Studio Code。

1
PS C:\Users\Admin> code $profile

在个人配置文件中,就可以设置好自己所需的别名,方便自己使用了。

1
2
3
4
5
6
7
8
9
# C:\Users\Admin\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Set-Alias java8 "C:\Program Files\Java\jdk1.8.0_301\bin\java.exe"
Set-Alias javaw8 "C:\Program Files\Java\jdk1.8.0_301\bin\javaw.exe"
Set-Alias javac8 "C:\Program Files\Java\jdk1.8.0_301\bin\javac.exe"

Set-Alias java11 "C:\Program Files\Java\jdk-11.0.12\bin\java.exe"
Set-Alias javaw11 "C:\Program Files\Java\jdk-11.0.12\bin\javaw.exe"
Set-Alias javac11 "C:\Program Files\Java\jdk-11.0.12\bin\javac.exe"