ZSH - 在正确的提示中打印 java 版本

ZSH - print java version in right prompt

我有一个日常用例,我需要在不同版本的 Java(8、11、...)上处理项目。

我想让它显示在我的 shell(ZSH 和 Oh-My-Zsh)的右侧提示中。我知道一个虚拟的方法(计算昂贵)来做到这一点(只是 java --version 到 var 并显示它)。我希望它缓存它直到我不获取文件(这是一个特定的项目文件,它为不同的 java 版本设置新的环境变量)。

您知道如何有效地执行此操作吗?

Br, 斯捷潘

PROMPTRPROMPT变量可以有静态部分和动态部分,所以你可以在源项目文件的时候在那里设置版本,它只会计算一次。诀窍是正确引用。

此行位于设置环境变量的项目文件中,在设置 PATH 以包含首选 java 可执行文件之后的某处:

RPROMPT="${${=$(java --version)}[1,3]}"

件数:

  • RPROMPT= - 右侧提示的变量。
  • "..." - 关键部分。双引号中的变量会随即展开,因此其中的命令只会在项目文件被获取时执行。
  • ${...[1,3]} - 选择封闭表达式的前三个词。在我的系统上,java --version returns 三行数据,对于提示来说太大了;这将其减少到易于管理的程度。
  • ${=...} - 将包含的值拆分为单词。
  • $(java --version) - jre 版本信息。