【发布时间】:2012-05-31 05:32:25
【问题描述】:
我正在尝试运行 Apache 启动脚本 /etc/init.d/httpd。像这样的环境变量定义会报错:
CONF_FILE=$(APACHE_HOME)/conf/httpd.conf
上面写着"/etc/init.d/httpd: line 15: APACHE_HOME: command not found"
所以,我用大括号替换了括号,脚本运行良好。是什么赋予了?我真的只是问这个问题,因为我想了解为什么它是错误的,而不是如何解决它。 shebang 就在那里,而且它没有对原始的 shell 脚本进行修改,那它为什么会误解呢?
【问题讨论】:
-
为什么要用括号?离开他们
-
$(foo)尝试将foo作为命令运行,并替换该命令的输出。 APACHE_HOME 不是命令。 -
$()是命令插值,${}是变量替换 -
为什么 Apache 的 httpd 文件出错了?
-
$(VAR)是 Makefile 中的变量扩展。也许您正在查看的文件旨在由 shell 以外的东西解析。