我写了一个简单的shell脚本(名为
我对此很好奇,于是我写了另一个shell脚本(
命令行:
我的问题是,为什么在终端上运行
附带问题/注意事项:是否有支持的“隐式后缀”列表,
test.sh
),使用两个不同的编译器(g++和clang++)编译一个测试C ++文件,并添加一些echo
语句来比较输出。在命令行上,我意外地输入了make test
,尽管该目录中没有Makefile。它执行了以下命令而不是抱怨没有Makefile或没有定义目标(我的系统运行64位Debian stretch OS与GNU Make 4.1)。user@hostname test_dir$ make test
cat test.sh >test
chmod a+x test
user@hostname test_dir$
我对此很好奇,于是我写了另一个shell脚本(
other.sh
),并做了同样的事情。
这是我的
other.sh
文件:
#!/bin/bash
echo ""
echo "This is another test script!"
echo ""
命令行:
user@hostname test_dir$ make other
cat other.sh >other
chmod a+x other
user@hostname test_dir$
我的问题是,为什么在终端上运行
make
命令时,make
会自动创建一个可执行脚本(没有.sh
扩展名)?这是正常/预期/标准的行为吗?我可以在所有Linux机器上依赖这种行为吗?
附带问题/注意事项:是否有支持的“隐式后缀”列表,
make
会自动创建可执行文件?
make -d other
来查看它将尝试的所有后缀的详细列表。 - William Pursell.out'、
.a'、.ln'、
.o'、.c'、
.cc'、.C'、
.cpp'、.p'、
.f'、.F'、
.m'、.r'、
.y'、.l'、
.ym'、.lm'、
.s'、.S'、
.mod'、.sym'、
.def'、.h'、
.info'、.dvi'、
.tex'、.texinfo'、
.texi'、.txinfo'、
.w'、.ch'、
.web'、.sh'、
.elc'、.el'.
- William Pursell