有什么区别?为什么这些有效:
echo $LOGNAME #prints username
echo "$(logname)" #prints username
但这不是:
echo "$(LOGNAME)" #prints command not found.
答案 0 :(得分:4)
logname
是一个命令
LOGNAME
是一个变量。
$(logname)
有效,因为存在logname命令
$(LOGNAME)
尝试运行不存在的命令LOGNAME
。
答案 1 :(得分:4)
$LOGNAME
是一个变量。 logname
是一个命令。当你这样做
echo $LOGNAME
你正在回应变量,而当你做
时echo "$(logname)"
您正在回应执行命令的结果。恰好是输出相同的情况。
如果您执行env | grep LOGNAME
,您会看到$LOGNAME
是一个环境变量,如果您执行which logname
,您将看到可执行文件的路径。但是,如果执行which LOGNAME
,您将看到没有输出。 echo $?
表示该命令的退出状态为1,这意味着找不到可执行文件。
巧合的是,您可以使用$PWD
和pwd
执行相同的操作。