Makefile为什么不执行别名语句

问题描述 投票:0回答:1

我正在一个需要makefile文件并且需要解析下面输入示例的类项目中使myapp arg1 arg2 arg3 arg4 ....

所以我创建了一个myapp.py

import sys
program_name = sys.argv[0]
arguments = sys.argv[1:]
count = len(arguments)
for x in sys.argv:
    print("Argument: ", x)

我创建一个Makefile

all:
    alias testapp="python3 myapp.py"

这样做可以让我写$ testapp arg1 arg2 arg3 ...如果我在终端中手动输入别名语句,则它可以正常工作,但是在Makefile中运行时,它对我不起作用。有什么解决办法吗?预先谢谢你

python makefile
1个回答
0
投票

这不特定于make

默认情况下,仅交互式外壳程序支持别名。

此外,在子进程中运行的任何代码(即您运行的不是内置Shell的任何命令)将无法在父进程中进行任何更改(别名,变量等)。

完成所需内容的简单方法是使myapp.py可执行;

chmod +x myapp.py

然后在您的PATH上的目录中创建您想要使用的名称的符号链接。假设$HOME/bin已经存在并且已经在您的PATH上,只需

ln -s $(pwd)/myapp.py $HOME/bin/testapp

在您拥有myapp.py的目录中。

别名有一些缺点;也许更喜欢使用别名的shell函数。

© www.soinside.com 2019 - 2024. All rights reserved.