【问题标题】:Make a script executable in bin directory ant在 bin 目录 ant 中使脚本可执行
【发布时间】:2015-06-03 02:59:56
【问题描述】:

这是我想要将脚本从 zip 转换为可执行文件的 ant 脚本。这是我的工作:

  • 解压 .zip 文件,
  • 存储到临时目录
  • 使用参数 validate 运行脚本“pkg”

<chmod dir="tmp/temp/test/bin" perm="ugo+rx" includes="**/*"  />

<echo message="Making scripts exec: tmp/temp/test/bin" />

<exec executable="/bin/bash">
    <arg value="tmp/temp/test/bin/pkg"/>
    <arg value="validate"/>
</exec>

这不会使脚本可执行,而是会出现此错误:

 Execute failed: java.io.IOException: Cannot run program "D:\tmp\temp\test\bin": CreateProcess error=5, Access is denied.

【问题讨论】:

  • 你运行的是哪个操作系统?
  • windows 但此脚本将在所有操作系统上运行

标签: ant exec chmod


【解决方案1】:

无法运行程序“D:\tmp\temp\test\bin”:CreateProcess 错误=5,访问被拒绝。

您是在 Windows 还是 Linux/Unix/MacOS 下运行它?

Windows 在文件中没有可执行性 的概念。相反,它将文件后缀与可执行程序相关联。例如,我可以将.py 后缀与python.exe 程序相关联。打开 foo.py 将在 Python 可执行文件下运行该 Python 脚本。将名称更改为foo.pl,脚本将不会运行,或者如果您已将.plperl.exe 关联,则将在Perl 下运行脚本。

您可以将脚本的后缀添加到%PATHEXT% 环境变量中,这样您就可以键入没有扩展名的文件名。例如,如果我将.py 添加到%PATHEXT%,并在命令行终端中输入foo,Windows 可能会查找foo.py 然后执行它。 (除非它首先找到foo.exefoo.bat。然后那些会执行)。

&lt;chmod&gt; 任务在 Windows 下什么都不做。在&lt;chmod&gt; 手册页中,它指出:

更改指定目录内的文件或所有文件的权限。 目前仅在 Unix 或 NonStop Kernel (Tandem) 下有效

此外,并非所有 Zip 实现都可以存储文件权限和所有权信息——尤其是 Unix 风格的权限和所有权。有些可以,有些不能。即使你想表达文件对 Unix 系统的可执行性,它也可能不起作用。

我建议在您的脚本中包含一个&lt;condition&gt; 测试来测试操作系统。然后,您可以将您在 Linux/Windows/MacOS 上的操作与您想在 Windows 系统上执行的操作分开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-20
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多