Perlのパスをコマンドで一括置換 (CGI)

Pocket

データを別サーバに移行してたら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

Pocket

2 Comments

  1. /usr/bin/env perl
    ではだめでしょうか?

  2. /usr/bin/env perlでもいいんじゃないでしょうか。
    Rubyのスクリプトではよく見かけますが、PerlのCGIが書かれてることが多いので/usr/bin/perlにしました。

    Rubyの場合は私も/usr/bin/env rubyと書くことが多いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です