如果我在一個系統上同時擁有/usr/bin/perl
和/usr/local/bin/perl
,我應該使用哪一個?
答案1
這取決於:在某些系統上,例如BSD打包,/usr/local/bin
可能是套件安裝執行檔的目錄。在這種情況下,它會更新(也許更好),但/usr/bin/perl
會更穩定。
您可以使用perl -V
查看哪個版本號較新。有時(在多用戶系統上)的內容/usr/local/bin
並不是真正更新的。
通常的妥協是讓使用者決定,透過env
在 shebang/hashbang 行中使用(但同樣,小路可能env
因係統而異)。 shebang 行指的是腳本的第一行,可能類似於以下其中之一:
#!/usr/bin/perl
#!/usr/bin/perl -w
#!/usr/bin/env perl
前兩個指定運行 Perl 的目錄。作為獎勵,此表單允許傳遞選項,例如-w
(用於開啟警告)。最後一行使用程式透過搜尋使用者環境變數中列出的目錄來env
選擇第一次出現的。perl
PATH
也可以運行這樣的腳本:
perl myscript
它(如)告訴 shell從 中列出的目錄中env
選擇第一個出現的。perl
PATH
明確的
./perl myscript
當然會覆蓋PATH
.但是帶有 shebang 行的腳本是大多數人使用 Perl 腳本的方式(Perl 單行是另一回事)。
延伸閱讀:
- /usr/bin/env perl - 查詢,參考舍邦線
- Linux 上的 /usr/bin 與 /usr/local/bin
- 包裝(7), FreeBSD 軟體包系統
/usr/local/bin
答案2
它是給誰用的?如果只有你一個人,只要你的兩個版本的 perl 都夠新就沒關係。是為了工作環境嗎?如果是這樣,請檢查您的部署策略,因為他們可能有答案。如果是為了向公眾分發,我建議根據軟體包類型進行變化,特別是對 debs(根據 debian 指南)和 rpms 使用 /usr/bin/perl(因為 Red Hat 明確不允許 rpms 安裝到 /usr/ local),但/usr/bin/env perl 用於tar 和shar 軟體包,因為它最有可能在隨機的UNIX 電腦上工作。