【发布时间】:2023-03-25 17:16:01
【问题描述】:
我的团队在 Makefile 的末尾有一个目标,如下所示:
# Fix permissions and ownership problems (only run this in development!)
fixperms:
@if [ $(OS_NAME) == "Linux" ]; then \
@sudo chown --recursive php:php .
@sudo chmod --recursive 0777 var/
fi
@if [ $(OS_NAME) == "Darwin" ]; then \
@sudo chown --recursive php:php .
@sudo chmod -R 0777 var/
fi
... 它在末尾包含一个换行符。当我运行 make fixperms(在我的 macOS 机器上——我没有在 Linux 上尝试过)时,我收到以下消息:
/bin/sh: -c: line 1: 语法错误:文件意外结束
make: *** [fixperms] 错误 2
我该如何解决这个问题?
===
编辑1:我也试过不换行——结果是一样的。
===
编辑 2:我还尝试重新排列 Makefile,以便在末尾放置一个不同的目标。运行 make fixperms 仍然会导致相同的错误。很奇怪。
【问题讨论】:
-
无论您想要完成什么,
chmod 777几乎肯定是错误的,并且是一个严重的安全问题。 恢复到正常的权限,可能还有所有权给需要能够写入此位置的特定系统用户。在最坏的情况下,如果您运行的生产系统对随机访问者具有写入权限,请执行安全审核并从已知良好的来源重新安装。
标签: macos makefile newline darwin