【问题标题】:How can i run perl script from anywhere in unix environment?如何在 unix 环境中的任何地方运行 perl 脚本?
【发布时间】:2011-10-02 00:44:40
【问题描述】:

我有这个 perl 脚本,我需要将它分发给想要在 unix 环境中的任何位置运行该脚本的同事。我可以做些什么来让他们轻松运行这个 PERL 脚本?例如,他们可以将 PERL 脚本放在其目录中的某个位置,然后只需键入即可运行

./xyz.pl ttt.conf

没有声明路径(如 /home/abc/bin/ddd/xyz.pl ttt.conf)。

【问题讨论】:

    标签: perl unix


    【解决方案1】:

    我以前的做法是在你的主目录中添加一个“bin”目录,并将其添加到$PATH 变量中。然后你可以将任何你想使用的脚本添加到该目录中。

    我不再熟悉确切的语法,但类似于:

    在 .bashrc 中:

    $PATH = ( $PATH , $HOME/bin )
    

    然后将脚本放入/home/user/bin(假设$HOME == /home/user)。当您重新加载 shell 时,它将像任何普通命令/程序一样使用。

    ETA:请参阅下面罗伯特关于语法的评论。此外,为了让您的同事使用您的脚本,您可以简单地使用硬编码路径,例如 /home/patrick/bin

    【讨论】:

    • sh 和 bash 的语法:PATH="$HOME/bin:$PATH"; export $PATH;对于 csh:setenv PATH "$HOME/bin:$PATH".
    • @TLP :我有同样的问题,我也修改了 PATH 变量。但是当我直接使用 perl 可执行文件时出现错误。当我执行“perl ~/bin/ 时,同一个文件可以完美运行
    【解决方案2】:

    将脚本放入/usr/local/bin(或$PATH 中的任何其他位置)。您的系统管理员可能需要帮助您。

    【讨论】:

      【解决方案3】:

      我使用的技术是:

      #!/usr/bin/env perl
      

      这是让命令解释器查找 Perl 的常用方法,无需 (a) 移动文件,或 (b) 在 shebang 中声明 Perl 的显式路径。

      在可移植性下提到:http://en.wikipedia.org/wiki/Shebang_(Unix)

      【讨论】:

      • 在脚本顶部添加 shebang 行将让您以 ./script 而不是 path/to/perl scriptperl script 运行脚本。 OP 正在询问如何从任何地方运行脚本。
      • @Dennis 是的,OP 的示例采用 ./script 形式 - 这就是需要 shebang 的原因。这是在不将 Perl 路径硬连接到脚本中的情况下完成这项工作的方法。
      【解决方案4】:

      你们都说得对...但是那个 perl 脚本可以在您的路径中等待奶牛回家...它不会运行...直到您设置可执行位......

      :bin localadmin$ ./perlextip
      -bash: ./perlextip: Permission denied
      :bin localadmin$ chmod +x perlextip 
      :bin localadmin$ ./perlextip 
      Exit 0!  Yeehaw.
      

      另外,应该注意的是,它不需要在你的路径中......你可以通过完整的路径调用它,前面有一个句点和一个斜杠,以执行它..

      :/ localadmin$ ./ServiceData/UNIX/bin/extip
      Exit 0!  Yeehaw.
      

      你也可以在你的~/.bash_profile 中为这样的命令创建一个别名,这样你就可以创建一个系统范围的快捷方式,你甚至可以输入一个 sudo 或类似的,如果你是如此倾向于......然后只需在任何地方按名称调用“extip”,系统就会提示你输入密码,并且一切都会好起来的。

      alias extip='sudo ./ServiceData/UNIX/bin/extip'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-29
        • 2010-09-26
        • 2023-03-03
        • 2013-03-06
        • 2020-06-22
        • 2020-11-15
        相关资源
        最近更新 更多