我有一个印象,我可以叫GNU makefile文件中使用bash的功能,但似乎是错误的。 下面是一个简单的测试,我有这样的功能定义:
>type lsc
lsc is a function
lsc ()
{
ls --color=auto --color=tty
}
这里是我的Makefile:
>cat Makefile
all:
lsc
以下是我在运行make得到:
>make
lsc
make: lsc: Command not found
make: *** [all] Error 127
我的印象错了吗? 或者是有任何ENV安装问题? 我可以在命令行中运行“LSC”。
使用$*
在你的bash脚本:
functions.sh
_my_function() {
echo $1
}
# Allows to call a function based on arguments passed to the script
$*
Makefile文件
test:
./functions.sh _my_function "hello!"
运行例如:
$ make test
./functions.sh _my_function "hello!"
hello!
你不能叫bash的功能或别名,在Makefile中,只有二进制文件和脚本。 但是你可以做什么,在呼唤一个交互式bash和指示它调用你的函数或别名:
all:
bash -i -c lsc
如果lsc
在您定义.bashrc
,例如。
你与出口“出口-f”的功能?
这是Bash你的Makefile的外壳,或者是为SH?
你可以导入所有shell脚本函数从shell文件,如果使用这个从这个问题我如何在makefile写的“CD”命令?
.ONESHELL: my_target
my_target: dependency
. ./shell_script.sh
my_imported_shell_function "String Parameter"
如果你愿意,你也可以甚至不使用.ONESHELL
的事情,只需使用一个冒号做这一切在同一行;
进口shell脚本之后:
my_target: dependency
. ./shell_script.sh; my_imported_shell_function "String Parameter"