Bash не будет выполнять системную команду в скрипте Perl

Нужен файл Bash для запуска скрипта perl.


Это файл Perl.

#!/usr/bin/perl -w use strict; system "fastacmd -s $Q -d $NewQuery -o ./gifiles/$Q.$NewQuery.txt"; 

Я оставил много, чтобы избежать осложнений при понимании этого сценария. Перед использованием команды bash скрипт работал с определенными переменными.


Вот сценарий Bash

 #!/bin/bash #$ -o $HOME/xREPLaunch_$JOB_ID.out #$ -e $HOME/xREPLaunch_$JOB_ID.err cd $HOME/Labwork/Dbfiles/results #$ -cwd perl xREPredoTop.pl 

По какой-то причине я продолжаю получать эту ошибку

 Can't exec "fastacmd": No such file or directory at xREPredoTop.pl line 78, <IN> line 1. 

Действительно смущен, почему это не работает.

Две возможности, о которых я могу думать:

Обычным является то, что вы запускаете скрипт bash из чего-то вроде cron, где ваш скрипт пользовательского профиля не запускался и не устанавливал $ PATH. В этом случае вы можете указать

 system "/path/to/fastacmd ... 

в perl-скрипте, чтобы он не зависел от пути, или вы можете установить

 $ENV{PATH}= "/my/custom/paths:$ENV{PATH}"; 

внутри скрипта perl, или вы можете исправить путь в сценарии bash, загрузив свои скрипты профиля:

 source /etc/profile; source ~/.profile; source ~/.bash_profile; 

Но другая возможность заключается в том, что #!/usr/bin/perl объявленный в вашем скрипте, не является тем же самым perl, что и в вашем PATH. Вы можете проверить это, сказав:

 which perl 

Например, если вы говорите ./xREPredoTop.pl он становится

 /usr/bin/perl -w ./xREPredoTop.pl 

но если вы скажете perl ./xREPredoTop.pl это может стать

 /usr/local/bin/perl ./xREPredoTop.pl 

и что можно каким-то образом настроить другой способ изменения пути.