我正在尝试在我的 Linux 机器上启动 NodeMCU。在安装 NodeMCU 驱动程序时,CH341SER_LINUX,Makefile构建出现以下错误:
root@ashtava:~/Downloads/CH341SER_LINUX (1)/CH341SER_LINUX# make -f Makefile
make -C /lib/modules/4.18.0-17-generic/build M=/home/ashtava/Downloads/CH341SER_LINUX (1)/CH341SER_LINUX
/bin/sh: 1: Syntax error: "(" unexpected
Makefile:5: recipe for target 'default' failed
make: *** [default] Error 2
我做错了什么?我遗漏了什么?
答案1
问题
命令输出中的错误如下,指出了这里存在什么错误:
/bin/sh: 1:语法错误:“(”意外
您收到此错误是因为文件名中有空格和括号。因此,当 shell 在命令中遇到空格时,它会将其视为文件名的结尾:
/home/ashtava/Downloads/CH341SER_LINUX
其余部分:
(1)/CH341SER_LINUX
被视为命令的另一个参数make
,但在此之前,shell 遇到一个括号,它对此感到困惑。
解决方案
您可以执行下列操作之一,或者尝试所有操作:
使用引号在文件名周围加上一个或两个这样的命令:
M='/home/ashtava/Downloads/CH341SER_LINUX (1)/CH341SER_LINUX'
或者
M="/home/ashtava/Downloads/CH341SER_LINUX (1)/CH341SER_LINUX"
使用转义字符
\
告诉 shell 处理特殊字符(此处为括号()和空间) 作为纯字符,例如:
M=/home/ashtava/Downloads/CH341SER_LINUX\ \(1\)/CH341SER_LINUX
这里有一个好读使用 Bash 时哪些字符需要转义?
请随意添加更多详细信息。