2012-04-10 53 views
0

我在位置/opt/apps/abc/folder/properties.env處有一個Korn shell腳本。我可以使用點命令從Unix bash執行它:在Perl代碼中運行ksh腳本不起作用

. /opt/apps/abc/folder/properties.env 

這是有效的。

我有一個Perl腳本abc.pl,我從中調用腳本properties.env。我嘗試了以下不同:上述工作的

  1. system('/usr/bin/ksh','-c', '. /opt/apps/abc/folder/properties.env');

  2. /usr/bin/ksh -c /opt/apps/abc/folder/properties.env;

  3. system('. /opt/apps/abc/folder/properties.env');

無。我不想使用exec,因爲我想返回到Perl腳本。我究竟做錯了什麼?

+0

1)你期望什麼結果? 2)你會得到什麼結果? – 2012-04-10 09:01:40

+1

'system('/ usr/bin/ksh',' - c','/opt/apps/abc/folder/properties.env');'? – 2012-04-10 09:23:25

+0

我也試過。沒有工作。 – 2012-04-10 09:32:10

回答

3

只要命令system生成ksh會話的生命週期,環境更改將持續。如果您希望環境更改影響Perl腳本,那麼您必須在啓動Perl程序之前在之前獲取該文件

0

如果您在perl代碼中(而不是在您稱爲perl的環境中)需要這些環境變量,那麼您還可以讀取並解析properties.env並在%ENV變量中設置環境。

e.g

$ENV{'ENV_VAR1'}=VALUE_OF_ENV_VAR1 

使用系統()產生另一個過程中,由於其他的海報說。孩子變化的環境不會影響父母。