Могут ли cons найти исполняемые файлы на моем пути?
Вопрос
Я пытаюсь отладить cons
скрипт, и проблема, с которой я сталкиваюсь, заключается в том, что исполняемый файл в моем собственном $PATH
похоже, он не обнаружен.Короче говоря:Может cons
найти исполняемые файлы на моем пути?
Это может показаться глупым вопросом, поскольку часто задаваемые вопросы говорит
Cons не передает пользовательскую среду дочерним процессам, которые она разветвляет для сборки программного обеспечения.Все, что вам нужно или что вы хотите передать из среды пользователя, должно быть сделано таким образом явно.
Однако мне не ясно, что cons
не должен быть в состоянии видеть мой $PATH
(приведенное выше сформулировано таким образом, что я бы не ожидал, что дочерние процессы будут иметь доступ к какой-либо из переменных среды).При исполнении Construct
, $PATH
вычисляется как пустое, но $ENV{PATH}
действительно содержит мой путь.
То, что я не знаю, не помогает cons
ни Perl
, так что я действительно не знаю, что я делаю, и с чего начать искать причину проблемы :)
Как бы то ни было, сценарий, который не работает у меня, но работает у оригинального автора сценария, находится здесь.
Решение
Как бы то ни было, рекомендации в FAQ верны в том смысле, что что-то подобное решит проблему:
# A standard construction environment.
$env = new cons(
ENV => { PATH => $ENV{PATH} }
);
за которым затем может последовать, например,
Command $env 'foo', qq(echo =`which tex`=);
для запуска / установки / сборки / всего, что вы делаете с cons
сценарий.