Perl Shell :: GetEnv - PullRequest
       1

Perl Shell :: GetEnv

0 голосов
/ 19 октября 2011

Я хочу получить исходный файл в Perl-скрипте, сначала я использую следующий метод:

system("source env.bash");

но я получил ошибку вроде:

Невозможно выполнить "источник": такого файла или каталога в строке s-test.pl нет.

Я не могу решить проблему, поэтому я использую Shell :: GetEnv :

use Shell::GetEnv;

$env = Shell::GetEnv->new('bash', 'source env.bash' );

$envs = $env->envs(%opt);
$env->import_envs(%opt);

но, похоже, это вообще не работает, кто-нибудь может мне помочь решить эту проблему? Большое спасибо.

1 Ответ

1 голос
/ 19 октября 2011

system() (по крайней мере, в Unix-подобных системах) вызывает указанную команду через /bin/sh.В отличие от bash, /bin/sh не имеет source в качестве синонима для ..

Но даже если вы измените его на system(". env.bash"), это не сработает.Предположительно env.bash устанавливает переменные среды (export FOO=BAR; ...).Такие настройки применяются только к текущему процессу.Он будет вызывать оболочку, устанавливать переменные окружения в этой оболочке и затем не влиять на вызывающий (perl) процесс.

Я никогда раньше не использовал Shell::GetEnv, но согласно документации %opt используется для передачи параметров функциям. Вы не показали нам, какое значение имеет %opt.Вы уверены, что вам это нужно?Возможно, вы просто хотите сделать:

...
$envs = $env->envs();
$env->import_envs();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...