将环境传递给子进程

时间:2017-03-20 10:21:34

标签: perl environment-variables

我正在运行一个启动Java应用程序的脚本。执行后,应用程序在当前工作目录%systemdrive%/ProgramData\Microsoft\Windows\Caches\cversions.2.db中创建一个文件夹。我在this问题上读到了问题,因为在执行的Java上下文中未定义变量%SystemDrive%
申请执行时:
system("java -jar application.jar");

如何明确地将所有环境传递给已执行的应用程序?

1 个答案:

答案 0 :(得分:3)

如果您使用字符串%systemdrive%\ProgramData\Microsoft\Windows\Caches来创建文件夹,那么它将不起作用。只有命令shell才会在命令中扩展环境变量,而Perl或Java将需要显式扩展该值。在Perl中你会使用

$ENV{SYSTEMDRIVE} . '\ProgramData\Microsoft\Windows\Caches'

在Java中你想要

System.getenv("SYSTEMDRIVE") + . "\\ProgramData\\Microsoft\\Windows\\Caches"