冒号作为整个第一行是什么意思?

帕特里夏(Patricia Shanahan)

我正在尝试在Windows 8.1系统上的Cygwin中构建Apache OpenOffice源代码。构建失败,并显示以下消息:

Entering /cygdrive/c/OpenOfficeDev/Trunk/main/solenv

/cygdrive/c/OpenOfficeDev/Trunk/main/solenv/bin/mkout.pl: line 1: $':\r': command not found
mkout -- version: 1.8 

mkout.pl的前几行是:

:
eval 'exec perl -wS $0 ${1+"$@"}'
    if 0;
#**************************************************************
#

我想了解这意味着什么。即使是良好的搜索字词也会有所帮助。

基思·汤普森

问题是\r(CR,Return)字符。

这些行:

eval 'exec perl -wS $0 ${1+"$@"}'
    if 0;

表示该文件mkout.pl旨在用作Shell脚本,并使用一种可导致脚本将自身重新执行为Perl脚本的黑客手段。这在不支持Unix样式的#!行的系统上很常见,但是在类似Unix的系统上也可以使用。

:是一个内置的shell命令,什么也不做。

错误消息表明它mkout.pl具有Windows样式的行尾。外壳(Cygwin的默认shell是bash)不处理Windows样式行尾,所以当它看到由字符的线条':''\r'以及'\n',它解释为一个命令,":\r"后跟一个换行符。(它不会将'\r'字符视为空格。)

修改mkout.pl为使用Unix样式的行尾应该可以解决当前的问题-但是,如果它是OpenOffice源代码发行版的一部分,那么将会有很多其他文件出现同样的问题。如果从.zip文件中提取源,请确保以转换文本文件的方式将其解压缩

(您可以只在Windows中安装OpenOffice或LibreOffice,但我认为您有充分的理由在Cygwin下从源代码进行构建。OpenOffice可能不支持该特定环境。)

一旦克服了这一点,仍然存在:Perl中意味着什么的问题(当前,Perl解释器永远看不到您的脚本。)

这实际上记录在中perldoc perlrun-S选项下(添加了强调):

该示例可在具有与Bourne shell兼容的shell的许多平台上工作:

#!/usr/bin/perl
eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}'
        if $running_under_some_shell;

系统将忽略第一行,并将程序提供给/ bin / sh,然后继续尝试将Perl程序作为shell脚本执行。该Shell作为常规Shell命令执行第二行,从而启动Perl解释器。在某些系统$0上,并不总是包含完整的路径名,因此-S告诉Perl必要时搜索程序。Perl找到程序后,它将分析行并忽略它们,因为变量$running_under_some_shell永远不会为true。如果程序将由csh解释,则即使不了解参数列表中的嵌入式空格(等),也需要将替换为“ ${1+"$@"}$*要启动sh而不是csh,某些系统可能必须替换“#!”行与仅包含冒号的行,Perl会礼貌地忽略该行。

csh可以识别:命令。csh我的系统上手册页没有提及,但是tcsh手册页却提到了

: 什么也不做,成功。

(与:sh和bash内置的:命令不同,csh的命令不接受参数。tcsh对此进行了更正。)

无论如何,固定行尾应该可以解决您的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ls命令:第一行是什么意思?

来自分类Dev

Makefile中的这一行是什么意思?

来自分类Dev

我的日志的这一行是什么意思?

来自分类Dev

Makefile中的这一行是什么意思?

来自分类Dev

bash中冒号“:-”是什么意思

来自分类Dev

URL中的冒号是什么意思?

来自分类Dev

XSLT中冒号是什么意思?

来自分类Dev

在Scala中,双冒号(或冒号)::是什么意思?

来自分类Dev

在VB中,当在<>之间放置一行代码是什么意思

来自分类Dev

Vim跳转列表中的最后一行为空是什么意思?

来自分类Dev

squid3中的每一行是什么意思

来自分类Dev

锁文件解释,每一行到底是什么意思?纱线锁

来自分类Dev

在htop输出中将减号作为命令的第一个字符是什么意思?

来自分类Dev

Python中冒号等于(:=)是什么意思?

来自分类Dev

称呼带有冒号的任务是什么意思?

来自分类Dev

在此ARM NEON代码中冒号是什么意思

来自分类Dev

随机冒号在JavaScript中是什么意思

来自分类Dev

子程序定义中的冒号是什么意思?

来自分类Dev

带冒号的XML语法是什么意思?

来自分类Dev

函数后冒号在Javascript中是什么意思?

来自分类Dev

Laravel中的双冒号是什么意思

来自分类Dev

::(双冒号)在JavaScript中是什么意思?

来自分类Dev

在此行中,双冒号是什么意思?

来自分类Dev

以双冒号为前缀的常量是什么意思?

来自分类Dev

在此ARM NEON代码中冒号是什么意思

来自分类Dev

冒号在这里是什么意思?

来自分类Dev

带冒号的XML语法是什么意思?

来自分类Dev

c++函数接口单冒号是什么意思

来自分类Dev

python作为输出是什么意思?