68user's page 掲示板

Prev< No. 4898> Next  [最新発言に戻る] [過去ログ一覧]
No. 4898 # 68user 2008/03/27 (木) 23:05:24
>>4897 べた
なるほど FreeBSD 5.2.1-RELEASE では動きますが、Linux では確かに
無限ループしてますねぇ。

> #!/usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl
これは FreeBSD 5.2.1-RELEASE では
    /usr/bin/env PERL_BADLANG=0 /usr/local/bin/perl ./hoge
と解釈されますが、Linux や Solaris では
    /usr/bin/env "PERL_BADLANG=0 /usr/local/bin/perl" ./hoge
となるため
    PERL_BADLANG="0 /usr/local/bin/perl"
という環境変数が設定されつつ
    /usr/bin/env ./a
が実行されるものの、./hoge のシェバング行にはまた同じ内容が
書かれているため、永遠に
    execve("./a");
が実行されるということですね。

参考:
    http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B7%A5%A7%A5%D0%A5%F3%A5%B0
    の Tips.2

というわけで env コマンドを使うやり方は移植性がありませんでしたが、
    #!/bin/sh
    PERL_BADLANG=0 /foo/bar/baz.pl
なら動くと思います。Linux では動きました。

Prev< No. 4898> Next  [最新発言に戻る] [過去ログ一覧]