Shell-Script

使用未知的 perl 位置執行 perl 腳本

  • February 5, 2014

我正在開發一個 perl 腳本,期望由對 shell、linux 等知識很少的 Mac 使用者下載,比如辦公室經理和會計師。

下載後,只需通過 GUI 點兩下即可執行腳本。

我的目標是讓不精通技術的使用者盡可能輕鬆地完成這項工作。

我的疑問是:

  • 下載腳本後將沒有可執行位
  • 如果 perl 執行檔不在預設位置,那麼我應該寫一些東西而不是#!/usr/bin/perl. 我應該在那裡寫什麼?除了打開控制台並輸入之外還有其他方法perl ./script.pl嗎?

或者,您可以sh為您處理它:

#!/bin/sh
exec perl -x "$0" "$@"

#!/usr/bin/perl
...

是的,這sh和 Perl 都在一個文件中。

來自man perlrun

-x

告訴 Perl 程序嵌入在更大的不相關文本塊中,例如在郵件消息中。前導垃圾將被丟棄,直到第一行以“#!”開頭 並包含字元串“perl”。將應用該行上的任何有意義的開關。

這種方法只假設 的路徑sh(在任何符合 POSIX 的作業系統上都應該是相同的)並且非互動式實例shperlPATH.

至於確保腳本設置了可執行位,您始終可以將其作為 tarball 分發,並讓您的使用者從 GUI 中“右鍵點擊,在此處提取”。如果 tarball 包含設置了可執行位的腳本,則提取的腳本應該設置了可執行位。

引用自:https://unix.stackexchange.com/questions/113738