FreeBSD QandA 329

FreeBSD QandA

Q. perl スクリプトに実行許可属性を付けて
     % ./foo.pl
   としたときと
     % perl foo.pl
   の場合で挙動が異なることがあります。

A. 前者と後者で起動される perl(1) のパス(とバージョン)が異なっているためです。

   前者の形式でスクリプトが実行されると、Unix はスクリプトの1行目を見て
   どのプログラムを起動するか判断します。起動されるプログラムは行頭の #!
   に続くパス名で、例えば catman(1) のように #!/usr/bin/perl となっていれ
   ば、/usr/bin/perl が起動されます。

   後者は普通のコマンド実行と同じく、shell によってコマンド検索パスを検索
   して見つけ出した perl が使われますので、環境変数 $PATH の設定によって
   変化する可能性があります。どの perl が使われるか確認するには which(1) 
   コマンドを利用して以下の様に入力します。

     % which perl
     /usr/bin/perl  (実行結果)

   それぞれの perl がどんなバージョンのものか確認するには -v オプション
   を使います。*フルパス* で perl を実行して比べてみてください。
   たとえば /usr/local/bin にある perl を確認するには

     % /usr/local/bin/perl -v
     This is perl, version 5.005_03 built for i386-freebsd
     ... (省略) ...

   と入力します。

   なお、/usr/bin/perl については FreeBSD 2.2 系列では Version 4、
   FreeBSD 3.0-RELEASE 以降では Version 5 になっています。

間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。