Shell命令“.profile”在perl中无法工作

时间:2013-06-26 05:07:24

标签: perl shell

我想在UNIX中切换不同的用户

. /home/tuxapp/.profile
other shell commond....

这可以在shell上运行。但是当我使用perl时它不起作用。

system(". /home/tuxapp/.profile");
other perl code....

系统是否会创建新流程?

但如何使用共同的环境?

谢谢!

1 个答案:

答案 0 :(得分:4)

如果希望shell命令为Perl命令设置环境变量,则必须让该shell执行Perl脚本。环境变量从父级传递给子级,而不是从子级传递给父级。

. /home/tuxapp/.profile && script.pl

如果绝对必须来自脚本,您可以启动一个设置环境并重新启动脚本的shell。

if (!$ENV{initialized}) {
   exec('sh', '-c', '. /home/tuxapp/.profile && initialized=1 exec "$@"', '--',
         $^X, '--', $0, @ARGV)
      or die;
}