#!/usr/bin/perl -w
my $file = "/mypath/myenv.env";
open (FILE, ". $file ;script_init $0 $* ;set |") or
die ("Cannot Open $file ($!)");
while (<FILE>){
chomp;
print "$_\n";
}
出力:
sh: script_init: command not found
問題:
この特定のエラーをシミュレートするためにスクリプトを分解しました。 $file = は、script_init およびその他の変数のパスを含む、ロードされる環境ファイルです。
script_init = 他のスクリプトが環境変数をロードするためのスクリプトの初期化に使用されるグローバル スクリプト関数。
シナリオ:
通常のシェルでscript_initを実行している場合、またはスクリプト(perlではない)で呼び出されている場合、機能しています。スクリプトの使用例はこんな感じです。
#!/bin/ksh
. /mypath/myenv.env
script_init "$0" "$*"
main script.. etc...
またはシェルで
$ script_init anotherscript parameter
しかし、perlで呼び出すと、script_initが認識されず. $file (env)
、スクリプトに必要なものをロードしてもコマンドが見つかりませんでした。