O Bash não executará o comando do sistema no script Perl

0

Precisa de um arquivo Bash para executar um script perl.

Este é o arquivo Perl.

#!/usr/bin/perl -w
use strict;


system "fastacmd -s $Q -d $NewQuery -o ./gifiles/$Q.$NewQuery.txt";

Eu deixei muito para evitar complicações ao entender este script. Antes de usar um comando bash, o script funcionava com as variáveis definidas.

Aqui está o script Bash

#!/bin/bash

#$ -o $HOME/xREPLaunch_$JOB_ID.out

#$ -e $HOME/xREPLaunch_$JOB_ID.err

cd $HOME/Labwork/Dbfiles/results

#$ -cwd

perl xREPredoTop.pl

Por algum motivo, recebo esse erro

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

Realmente confuso por que isso não está funcionando.

    
por Andrew Lewis 20.08.2015 / 21:30

1 resposta

3

Duas possibilidades que posso pensar:

O mais comum é que você está executando o script bash a partir de algo como o cron, onde seu script de perfil de usuário não foi executado e configurou $ PATH. Nesse caso, você pode especificar

system "/path/to/fastacmd ...

dentro do script perl para que não dependa do caminho, ou você pode definir o

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

dentro do script perl, ou você pode corrigir o caminho no script bash carregando seus scripts de perfil:

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

Mas a outra possibilidade é que #!/usr/bin/perl declarado em seu script não seja o mesmo perl que em seu PATH. Você pode verificar isso dizendo

which perl

Por exemplo, se você disser ./xREPredoTop.pl , ele se tornará

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

mas se disser perl ./xREPredoTop.pl , poderá tornar-se

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

e que um poderia ser configurado de forma diferente, de alguma forma que muda o caminho.

    
por 20.08.2015 / 23:13

Tags