我在/opt/apps/abc/folder/properties.env
这样的位置有一个Korn shell脚本。我可以使用dot命令从Unix bash执行它:
. /opt/apps/abc/folder/properties.env
这很有效。
我有一个Perl脚本abc.pl
,我从中调用脚本properties.env
。我尝试了以下不同的方法:
system('/usr/bin/ksh','-c', '. /opt/apps/abc/folder/properties.env');
/usr/bin/ksh -c /opt/apps/abc/folder/properties.env;
system('. /opt/apps/abc/folder/properties.env');
以上工作都没有。我不想使用exec
,因为我想返回Perl脚本。我做错了什么?
答案 0 :(得分:3)
环境更改只会持续system
命令生成的ksh会话的生命周期。如果您希望环境更改影响Perl脚本,则必须在启动Perl程序之前获取该文件。
答案 1 :(得分:0)
如果你需要perl代码中的那些环境变量(不在你调用perl的环境中),你也可以读取和解析那些properties.env并在%ENV变量中设置环境。
e.g
$ENV{'ENV_VAR1'}=VALUE_OF_ENV_VAR1
使用system()生成另一个进程,正如另一张海报所说。改变孩子的环境不会影响父母。