Очистить среду выполнения оболочки для запуска системы Perl?

Мне нужно создать несколько Perl-программ в среде Solaris 9 SPARC под управлением Oracle EBS, одна из которых будет запускаться из cron. Учетная запись UNIX, которая будет работать на Perl, имеет все переменные среды, настроенные для запуска программ, ориентированных на Oracle, поэтому, когда я запускаю "/usr/bin/perl -V", я получаю следующую ошибку компиляции. К счастью, запуск Perl cron не зависит от настроек среды Oracle.

bash-2.05$ /usr/bin/perl -V
Perl lib version (5.00503) doesn't match executable version (5.008) at /u01/app/applmgr/pr/iAS/Apache/perl/lib/5.00503/sun4-solaris/Config.pm line 7.
Compilation failed in require.
BEGIN failed--compilation aborted.

Моей первой мыслью было использование блока BEGIN для уборки дома, чтобы я мог использовать системный Perl, а не версию, поставляемую Oracle EBS.

#!/usr/bin/perl

BEGIN {
  delete $ENV{PERL5LIB};
  delete @INC[0..$#INC];
  push @INC, map { "/usr/local/lib/perl5/$_" } (
    '5.8.0','5.8.0/sun4-solaris',
    'site_perl','site_perl/5.8.0','site_perl/5.8.0/sun4-solaris'
  );
}

print "Hello clean Perl environment! :)\n";

Мне не разрешено изменять локальный профиль учетной записи UNIX, так что это правильный способ справиться с этим сценарием?

1 ответ

Решение

-i вариант env Команда позволяет запускать программы в чистой среде. С тех пор env страница руководства:

   -i, --ignore-environment
          start with an empty environment

Для вас пример Perl:

env -i perl -V
Другие вопросы по тегам