データを別サーバに移行してたらPerlで書かれたCGIが入っていて、動作確認したら動かなかった。
あれと思って調べてみたら、Perlのパスが”/usr/local/bin/perl”になってたのが原因だった。
いつも使ってるサーバでのパスは”/usr/bin/perl”だ。
どうも以前はシンボリックリンクで対応したようだけど、今回はファイルの方を書き換えることにした。
ln -s /usr/bin/perl /usr/local/bin/perl
それで、スクリプトのパスの方を書き換えようとしたら、複数ファイルに書かれていた・・・
ということで、コマンドの組み合わせを考えてみる。
カレントディレクトリ以下の”/usr/local/bin/perl”が含まれるファイルはgrepで探せる。
grep -rl '/usr/local/bin/perl' *
パスの置換はsedでできるのでxargsにパイプして一括置換できましたよと。
grep -rl '/usr/local/bin/perl' * | xargs sed -i 's/\/usr\/local\/bin\/perl/\/usr\/bin\/perl/'
実行するとファイルが書き換えられるので、ちゃんとバックアップとってお試し下さい。
関連記事
- None Found
/usr/bin/env perl
ではだめでしょうか?
/usr/bin/env perlでもいいんじゃないでしょうか。
Rubyのスクリプトではよく見かけますが、PerlのCGIが書かれてることが多いので/usr/bin/perlにしました。
Rubyの場合は私も/usr/bin/env rubyと書くことが多いです。