身为一个Java开发者,在公司生产环境中依然是java8,然而我自己偶尔写点小东西之类的还是更倾向于java11。于是很自然的装了两个jdk,java8与java11,但是问题也同样来了,假设现在要在命令行启动一个java8的jar包,但是默认的java命令是java11,这个时候就得先cd到 cd /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/
然后再执行java -jar
。
虽然可以可以实现,但是不够优雅。如何才能优雅呢?

其实alias
命令就可以帮助我们实现。alias
的作用其实很类似于我们经常见到的短链接,后者是吧很长的链接缩短,alias
也是一样,它可以吧很长的命令缩短。
而且用法也很简单,直接执行:alias j8=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/java
即可实现将/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home/bin/java
缩短为j8
,接下来我们只要敲j8
这个命令就可以使用java8
并且不受环境变量的影响;现在我们已经有了一个j8,如法炮制j11一个alias j11=/Library/Java/JavaVirtualMachines/jdk-11.0.5.jdk/Contents/Home/bin/java
。

然后当我们需要java8
去启动jar包时只需要执行:j8 -jar xxx.jar
即可,如果需要java11
启动则是j11 -jar xxx.jar

接下来我们需要做的是将刚才的两个alias
写到~/.zshrc
中即可。
未经允许不得转载:鹞之神乐 » Mac巧用alias实现在终端动态切换Java版本