我在 .zshrc 中发现了不同的变量提及,有带花括号的和没有花括号的。这两者之间有什么区别?
export ANDROID_HOME=${HOME}/Library/Android/sdk
和
export ANDROID_HOME=$HOME/Library/Android/sdk
?
答案1
花括号告诉 shell 需要替换的标记的确切开始和结束位置。
这通常很重要,因为变量名后紧跟的某些字符(例如冒号或开方括号)对 shell 来说可能是有意义的,从而可能在处理变量替换(技术上称为“参数扩展”)时触发不必要的行为。
看https://zsh.sourceforge.io/Doc/Release/Expansion.html#Parameter-Expansion
请注意,冒号和一些其他参数扩展修饰符可以追溯到原始的 Bourne shell ( /bin/sh
),可能是 POSIX 合规性的一部分,并且适用于几乎所有类 Unix 操作系统上的几乎所有 shell,而不仅仅是zsh
macOS。
編輯:删除了错误的例子并集中于冒号的情况。