无法调用里面的makefile bash函数(Cannot call bash function i

2019-08-02 01:57发布

我有一个印象,我可以叫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”。

Answer 1:

使用$*在你的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!


Answer 2:

你不能叫bash的功能或别名,在Makefile中,只有二进制文件和脚本。 但是你可以做什么,在呼唤一个交互式bash和指示它调用你的函数或别名:

all:
    bash -i -c lsc

如果lsc在您定义.bashrc ,例如。



Answer 3:

你与出口“出口-f”的功能?

这是Bash你的Makefile的外壳,或者是为SH?



Answer 4:

你可以导入所有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"


文章来源: Cannot call bash function inside makefile