【发布时间】:2011-10-02 00:44:40
【问题描述】:
我有这个 perl 脚本,我需要将它分发给想要在 unix 环境中的任何位置运行该脚本的同事。我可以做些什么来让他们轻松运行这个 PERL 脚本?例如,他们可以将 PERL 脚本放在其目录中的某个位置,然后只需键入即可运行
./xyz.pl ttt.conf
没有声明路径(如 /home/abc/bin/ddd/xyz.pl ttt.conf)。
【问题讨论】:
我有这个 perl 脚本,我需要将它分发给想要在 unix 环境中的任何位置运行该脚本的同事。我可以做些什么来让他们轻松运行这个 PERL 脚本?例如,他们可以将 PERL 脚本放在其目录中的某个位置,然后只需键入即可运行
./xyz.pl ttt.conf
没有声明路径(如 /home/abc/bin/ddd/xyz.pl ttt.conf)。
【问题讨论】:
我以前的做法是在你的主目录中添加一个“bin”目录,并将其添加到$PATH 变量中。然后你可以将任何你想使用的脚本添加到该目录中。
我不再熟悉确切的语法,但类似于:
在 .bashrc 中:
$PATH = ( $PATH , $HOME/bin )
然后将脚本放入/home/user/bin(假设$HOME == /home/user)。当您重新加载 shell 时,它将像任何普通命令/程序一样使用。
ETA:请参阅下面罗伯特关于语法的评论。此外,为了让您的同事使用您的脚本,您可以简单地使用硬编码路径,例如 /home/patrick/bin。
【讨论】:
PATH="$HOME/bin:$PATH"; export $PATH;对于 csh:setenv PATH "$HOME/bin:$PATH".
将脚本放入/usr/local/bin(或$PATH 中的任何其他位置)。您的系统管理员可能需要帮助您。
【讨论】:
我使用的技术是:
#!/usr/bin/env perl
这是让命令解释器查找 Perl 的常用方法,无需 (a) 移动文件,或 (b) 在 shebang 中声明 Perl 的显式路径。
【讨论】:
./script 而不是 path/to/perl script 或 perl script 运行脚本。 OP 正在询问如何从任何地方运行脚本。
你们都说得对...但是那个 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'
【讨论】: