.
и source
(эквиваленты) являются bash
внутренними командами. Системный вызов пытается найти исполняемый файл (первый бит перед пробелом) и не находит его (.
не существует как исполняемый файл, поскольку это внутренняя команда bash).
Вы должны выполнить bash (или оболочку, которую вы используете) напрямую, используя system:
system ("/bin/bash ./setenv.sh");
Однако, обратите внимание , что то, что вы пытаетесь сделать, если только setenv.sh
не имеет каких-либо побочных эффектов, не действует, так как оболочка, которую вы начинаете читать в этой среде, умирает сразу после выполнения system
линия. Чтобы установить среду для вашей Perl-программы, вы должны использовать переменную %ENV
.