[英]Perl: run system command with shell environment
尝试在完整的shell环境中运行perl system命令。 与shell = True的Python Popen相似。 尝试过系统('/ bin / bash -c“ something”'),但是没有用。 有人将一个非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
如果运行以下脚本会发生什么:
#!/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";
您可以编辑问题以包括该程序的输出吗?
会发生什么:
my $rc = system "/bin/bash", "-c", "shell command to run with arguments";
if ($rc != 0) {print "command failed: $?";}
因此看来,如果使用system()命令,则除非看到外壳元字符或arg为标量形式,否则它不会真正调用外壳。 因此,system(“ echo real shell”)在我的情况下有效,而system(“ echo”,“ real”,“ shell”)无效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.