我想在UNIX中切换不同的用户
. /home/tuxapp/.profile
other shell commond....
这可以在shell上运行。但是当我使用perl时它不起作用。
system(". /home/tuxapp/.profile");
other perl code....
系统是否会创建新流程?
但如何使用共同的环境?
谢谢!
答案 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;
}