【问题标题】:Making perl scripts executable... can I do away with the preceding 'perl' statement?使 perl 脚本可执行...我可以取消前面的“perl”语句吗?
【发布时间】:2014-03-05 03:17:24
【问题描述】:

这是一个非常简单...这是我的示例脚本,名为test

#!/usr/bin/perl
print "Hey there\n";

然后我使用chmod 775 test 使脚本可执行。如果我使用命令perl test,我会得到输出Hey there

但是,如果我只输入test,我就没有输出。这是怎么回事?为什么我的 shebang 线没有让环境意识到这是 perl?有人可以帮帮我吗?

【问题讨论】:

  • 尝试./test 或将您的脚本放在路径中的某个位置。
  • 尝试重命名您的脚本。 test 是大多数 shell 中的内置命令。
  • 对不起各位,我忘了提到我正在使用的文件夹已经添加到 $PATH。是的,问题是我将文件命名为 test! Sample 工作。谢谢!
  • 在你的脚本上运行dos2unix

标签: linux perl unix shebang


【解决方案1】:

要从当前目录运行某些内容,您需要添加前缀“./”来告诉它“此目录”,即./testprogram

如果您只输入test,它将在标准安装目录(如/bin)中查找。这就是为什么当你运行cprm 时它知道可执行文件在哪里。

正如其他人所提到的,大多数 shell 都不允许将脚本命名为 test

【讨论】:

  • test 的特定情况下,大多数 shell 不会在任何地方查找,因为它们将其实现为内置的,优先于外部二进制文件。
  • 编辑删除对test的引用
【解决方案2】:

不要将您的脚本命名为test。这是大多数 shell 中的内置命令,因此它们不会去寻找外部程序。

另外,要在当前目录中运行程序,您应该输入./programname。在您的$PATH 中包含. 通常是个坏主意,这对于在没有目录前缀的情况下执行它是必要的。

【讨论】:

    猜你喜欢
    • 2012-08-10
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    相关资源
    最近更新 更多