makefile 中的命令前面有反斜杠

问题描述 投票:0回答:1

在 makefile 中的命令前添加反斜杠有什么作用?

例如本例中的

\rm
命令:

# LaTeX Makefile
FILE=report

all: $(FILE).pdf

.PHONY: clean
clean:
\rm *.aux *.blg *.out *.bbl *.log

$(FILE).pdf: $(FILE).tex
pdflatex $(FILE)
pdflatex $(FILE)
bibtex $(FILE)
pdflatex $(FILE)
pdflatex $(FILE)
makefile
1个回答
2
投票

不需要,但也没有什么坏处。配方中的反斜杠(除非它们位于行尾)并不有趣,因此它们只是传递给 shell。 shell 会发现反斜杠 (

r
) 后面的下一个字符不是特殊字符,因此它会忽略反斜杠。

通常人们在 shell 命令之前使用反斜杠,以确保不使用 shell 别名:反斜杠禁止别名查找:

$ alias foo='echo bar'
$ foo
bar
$ \foo
foo: command not found

但是,在 makefile 中不需要这样做,因为 make 使用

/bin/sh
作为非交互式 shell 调用所有配方,因此这些别名通常不可用。

© www.soinside.com 2019 - 2024. All rights reserved.