尝试使用完整的shell环境运行perl系统命令。类似于Python的Popen,shell = True。尝试系统('/ bin / bash -c“某事”')并且不起作用。有人挂了一个非perl家伙!
---更新---
# ./test.pl
ENV-PATH: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
sys-PATH: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
答案 0 :(得分:1)
如果运行以下脚本会发生什么:
#!/usr/bin/perl
use strict;
use warnings;
my $path = $ENV{'PATH'};
print "ENV-PATH: ";
print $path;
print "\n";
print "sys-PATH: ";
system("echo \$PATH") == 0 or die;
print "\n";
您可以编辑您的问题以包含此计划的输出吗?
答案 1 :(得分:0)
会发生什么:
my $rc = system "/bin/bash", "-c", "shell command to run with arguments";
if ($rc != 0) {print "command failed: $?";}
答案 2 :(得分:0)
所以看起来如果使用system()命令,它不会真正调用shell,除非看到shell元字符或者arg是标量形式。所以系统(“echo real shell”)在我的情况下工作,但不适用于系统(“echo”,“real”,“shell”)。