我使用 Apache Ant 从源代码自动构建程序。
build.xml
有 exec
任务,命令 lazbuild
在我的机器上未在路径中注册,需要使用一些附加参数来调用。所以我用命令在 ~/.bashrc
中创建别名:
alias lazbuild="/home/artem/fpcupdeluxe/lazarus/lazbuild --pcp='/home/artem/fpcupdeluxe/config_lazarus' --lazarusdir='/home/artem/fpcupdeluxe/lazarus'"
当我在终端中手动输入
lazbuild
时,它工作正常,但是当 Ant 开始构建时,它会失败并出现错误:
/home/artem/Projects/Lazarus/AutoScreenshot/build.xml:87:执行失败:java.io.IOException:无法运行程序“lazbuild”(在目录“/home/artem/Projects/Lazarus/AutoScreenshot”中):错误=2,没有文件或目录。
我尝试也在
~/.bash_profile
、~/.profile
和 aliases.sh
目录中的新文件 /etc/profile.d/
创建别名,但没有成功。
有什么想法可以做到这一点吗? 谢谢。
通过将别名转换为 shell 脚本来省去麻烦。创建一个包含
的
~/bin/lazbuild
#!/bin/sh
/home/artem/fpcupdeluxe/lazarus/lazbuild --pcp='/home/artem/fpcupdeluxe/config_lazarus' --lazarusdir='/home/artem/fpcupdeluxe/lazarus' "$@"
运行
chmod +x ~/bin/lazbuild
,如果您还没有 PATH="$PATH:$HOME/bin"
,请将其添加到 .bashrc
中。 lazbuild
现在将在所有上下文中充当真正的命令。
如果您确实想使用 bash 别名,则必须调用 bash、启用别名扩展、获取定义并在单独的解析单元中调用命令。这是一个非常糟糕的做法:
<exec executable="bash">
<arg value="-c" />
<arg value="shopt -s expand_aliases; source ~/.bashrc; eval lazbuild" />
</exec>