#!/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 = 全局脚本函数,用于其他脚本加载环境变量的脚本初始化。
设想:
如果我在常规 shell 中运行 script_init 或在脚本(不是 perl)中调用它,它正在工作。脚本的示例用法是这样的。
#!/bin/ksh
. /mypath/myenv.env
script_init "$0" "$*"
main script.. etc...
或在外壳中
$ script_init anotherscript parameter
但是如果我在 perl 中调用它,它不会识别导致找不到命令的 script_init,即使它加载. $file (env)
了脚本所需的命令。