/bin/sh: @echo: 未找到命令

Chr*_* G. 3 linux bash makefile gnu-make

run:
    cd ..; \
    @echo $(shell pwd)
Run Code Online (Sandbox Code Playgroud)

抛出这个:

/bin/sh: @echo: command not found
Run Code Online (Sandbox Code Playgroud)

以下工作正常,并打印当前目录:

run:
    @echo $(shell pwd)
Run Code Online (Sandbox Code Playgroud)

你知道为什么吗?

眠りネ*_*ネロク 5

正如错误消息已经表明的那样:

/bin/sh: @echo: command not found

未找到的实际命令是@echo, not echo。发生此问题的原因是 shell 收到下面的单行,因为您正在使用 转义换行符\

cd ..; @echo [output of pwd]
Run Code Online (Sandbox Code Playgroud)

您可以将其放在命令@之前cd

run:
    @cd ..; \
    echo $(shell pwd)
Run Code Online (Sandbox Code Playgroud)

这样,shell 将收到以下行:

cd ..; echo [output of pwd]
Run Code Online (Sandbox Code Playgroud)

  • 基本上,`pwd` 的执行必须被延迟,以便它由 shell 执行,而不是由 `make` 执行。 (2认同)