Put*_*nik 5 osx perl executable shell-script shebang
我正在开发一个 perl 脚本,希望由对 shell、linux 等了解很少的 Mac 用户下载,比如说办公室经理和会计师。
下载后,只需通过 GUI 双击即可执行脚本。
我的目标是让不精通技术的用户尽可能轻松地完成这项工作。
我的疑问是:
#!/usr/bin/perl
. 我应该在那里写什么?除了打开控制台并输入之外还有其他方法perl ./script.pl
吗?或者,您可以sh
为您处理:
#!/bin/sh
exec perl -x "$0" "$@"
#!/usr/bin/perl
...
Run Code Online (Sandbox Code Playgroud)
是的,这sh
和 Perl 都在一个文件中。
来自man perlrun
:
-x
告诉 Perl 该程序嵌入在一大块不相关的文本中,例如邮件消息中。前导垃圾将被丢弃,直到以“#!”开头的第一行 并包含字符串“perl”。将应用该行上任何有意义的开关。
这种方法只假定的路径sh
(这应该是在任何兼容POSIX的操作系统相同)和非交互式的实例sh
具有perl
在其某处PATH
。
至于确保脚本设置了可执行位,您始终可以将其作为 tarball 分发,并让您的用户从 GUI 中“右键单击,在此处提取”。如果 tarball 包含设置了可执行位的脚本,则提取的脚本应该设置了可执行位。
对于 shebang 行,请使用:
#!/usr/bin/env perl
Run Code Online (Sandbox Code Playgroud)
env
将在执行perl
它找到的第一个时搜索 PATH 。如果你想为 perl 指定任何选项,只需将它们添加到上面一行的末尾。
如果perl
安装了多个,env
将运行它在 PATH 中找到的第一个。