4

我正在尝试使用 Perl 脚本在我们拥有的工具(wpj)中添加某些目录。直接命令看起来像

$ wpj 添加路径/到/desired/library makefile.wpj

我想做一个脚本来自动化这个,因为很多事情都要做。但是,设置了一组非常特殊的环境变量来制作“wpj”。如果我用 Perl 的反引号调用 wpj,则调用失败。你可以看到下面的代码

$command = "wpj add library path\\to\\file.wpj \\path\\to\\add";
print $command."\n";
$result = `$command`;
print "->".$result."\n";

为此我得到

wpj: not found

但是,来自 shell 的相同调用会成功。某些东西没有正确导出,您能否就如何将调用环境导出到反引号创建的子shell 中给我一些建议?

4

2 回答 2

6

检查PATH并根据需要修改其内容:

use Env qw(@PATH);

# check the PATH:
print join("\n", @PATH);

# modify its content:
push @PATH, "/usr/bin/wpj";

该模块的官方手册

于 2012-07-18T13:34:46.767 回答
4

无需您执行任何操作即可继承环境。我怀疑wpj不是可执行文件,而是 shell 别名。因此,您需要在定义了该别名的 shell 中运行该命令。这可能需要一个交互式 shell,具体取决于您创建别名的方式。

system('bash', '-i', '-c', 'wpj add path/to/desired/library makefile.wpj');
于 2012-07-18T17:08:23.733 回答