我有一種情況,我需要檢測是否存在一個特定的perl可執行文件/usr/goofy/bin/perl
,如果有,請使用它來運行Perl腳本,否則使用/usr/bin/perl
。有條件的Perl Shebang?
我一直在努力與這個小POC腳本,叫perlshebang.pl
:
#!/bin/sh -e
perls="/usr/goofy/bin/perl /usr/bin/perl"
for pl_exec in $perls
do
if [ -x $pl_exec ]; then
exec "$pl_exec -w -S \"$0\" ${1+\"[email protected]\"}"
fi
done
print "[$^X] Whoop!\n";
當我的系統上運行此不具有/usr/goofy/bin/perl
我收到此錯誤信息:
./perlshebang.pl: 6: exec: /usr/bin/perl -w -S "./perlshebang.pl" : not found
而且當我運行它有一個系統確實有/usr/goofy/bin/perl
我得到一個similuar錯誤信息:
./perlshebang.pl: line 6: /usr/goofy/bin/perl -w -S "./perlshebang.pl" : No such file or directory
我想我很接近,但無法弄清楚爲什麼我會收到這些錯誤消息。
謝謝!
正確的方法來處理這將是依靠路徑中的標準優先規則。首先搜索'PATH'開頭的內容。 –
是的,這將是很好的。但是我無法控制腳本將要運行的所有系統上的PATH。 –
這更糟。如果這是你正在發佈的東西,並且需要一定的Perl版本或風格,那麼你就要求它。 –