macOS 中的 ${HOME} 和 $HOME 有什么区别?

macOS 中的 ${HOME} 和 $HOME 有什么区别?

我在 .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,而不仅仅是zshmacOS。

編輯:删除了错误的例子并集中于冒号的情况。

相关内容