printenv x和printenv ($x)之间的区别是什么我在zsh上,当我尝试printenv $PATH时,我只看到PATH env变量作为输出,但当我尝试printenv ($PATH)时,我得到所有env变量作为输出。
printenv x
printenv ($x)
printenv $PATH
printenv ($PATH)
sqxo8psd1#
你在问题标题中发布的变体的共同之处在于,它们都没有意义。printenv [OPTION]... [Variable]...$PATH和($PATH)都不是变量名。$PATH将展开为冒号分隔的目录列表。($PATH)的开始括号将向zsh发出信号,表明它是globbing的一部分(请参阅zsh手册页中的文件名扩展),并且zsh希望括号后有有效的扩展标志。在这种情况下,zsh的确切React(错误消息,或只是输出一个空行)取决于PATH的值以及如何配置zsh以在globbing失败的情况下表现。当您使用set -x打开命令跟踪时,您可以看到在您的案例中实际发生了什么。有意义的是写
$PATH
($PATH)
PATH
set -x
printenv PATH
因为PATH确实是一个变量。
1条答案
按热度按时间sqxo8psd1#
你在问题标题中发布的变体的共同之处在于,它们都没有意义。
printenv [OPTION]... [Variable]...
$PATH
和($PATH)
都不是变量名。$PATH
将展开为冒号分隔的目录列表。($PATH)
的开始括号将向zsh发出信号,表明它是globbing的一部分(请参阅zsh手册页中的文件名扩展),并且zsh希望括号后有有效的扩展标志。在这种情况下,zsh的确切React(错误消息,或只是输出一个空行)取决于PATH
的值以及如何配置zsh以在globbing失败的情况下表现。当您使用
set -x
打开命令跟踪时,您可以看到在您的案例中实际发生了什么。有意义的是写
因为
PATH
确实是一个变量。