我想在 UNIX 中切换不同的用户
. /home/tuxapp/.profile
other shell commond....
这可以在shell上工作。但是当我使用 perl 时它不起作用。
system(". /home/tuxapp/.profile");
other perl code....
系统会创建一个新进程吗?
但是如何使用通用环境呢?
谢谢!
如果您希望 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;
}