0

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

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

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

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

系统会创建一个新进程吗?

但是如何使用通用环境呢?

谢谢!

4

1 回答 1

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;
}
于 2013-06-26T05:22:29.943 回答