【问题标题】:Cygwin usr/bin/perl: bad interpreter : Permission deniedCygwin usr/bin/perl:错误的解释器:权限被拒绝
【发布时间】:2015-06-26 02:58:25
【问题描述】:

您好,我正在尝试在 Windows 64 位上运行 perl 脚本。我收到这样的错误:

/usr/bin/perl : 错误的解释器 : Permission denied

我在 Windows 64 位 C:\test\perlscripts\testperl.pl 上有我的 perl 脚本。

【问题讨论】:

  • 你是从 cygwin shell 还是 windows shell 调用脚本?如果您尝试从 Windows 运行它(cmd shell 或在资源管理器中双击它),您将无法使用 Cygwin 路径/解释器。
  • 我正在从 cygwin shell 调用脚本。
  • 您是否使用 Windows 编辑器创建了文件?如果是这样,那么行尾可能会有一个杂散的 \r ,所以它试图调用的真正解释器是/usr/bin/perl^M?你可以从 shell 运行 /usr/bin/perl 并让它实际执行 perl 吗?
  • 显示脚本的前几行,包括shebang line。还包括前几行的 hexdump:来自 Cygwin bash shell:head testperl.pl | od ...我猜你在 shebang 行的perl 之后有一个额外的 CR。
  • 我有类似的问题,但问题不相关。将其放在评论中,以便它可以帮助某人。如果您没有使用 C 驱动器作为可执行文件 cygwin 将永远无法找到相同的驱动器。将所有程序保存在 C 盘中,以便 cygwin 运行

标签: perl cygwin


【解决方案1】:

您可能使用 DOS 样式 line endings 保存了 Perl 脚本。 shell 正在寻找一个名为/usr/bin/perl<CR> 的文件。

使用 Unix 风格的行结尾保存您的文件。我与本机编译的vim 和gvim 一起使用的.vimrc 具有:

set fileformat=unix
set fileformats=unix,dos

检查编辑器的设置以获取适当的选项。

要修复特定文件中的行尾,请使用$ dos2unix filename。

【讨论】:

    【解决方案2】:

    你不能在默认的 cygwin64 包中安装Perl。请确保您在/usr/bin/perl.exe 拥有Perl。

    如果不存在,请再次运行 setup-x86_64.exe 并选择 Perl 解释器。

    【讨论】:

    • 当 OP 引用的错误出现在 cygwin 中使用 autoreconf 时,这对我有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 2011-07-28
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多