Perl 스크립트를 실행하려면 Bash 파일이 필요합니다.
이것은 펄 파일입니다.
#!/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.
왜 이것이 작동하지 않는지 정말 혼란 스럽습니다.
답변1
내가 생각할 수 있는 두 가지 가능성은 다음과 같습니다.
일반적으로 발생하는 일은 사용자 프로필 스크립트가 아직 실행되지 않고 $PATH가 설정된 cron과 같은 곳에서 bash 스크립트를 실행하는 것입니다. 이 경우 지정할 수 있습니다.
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에 선언된 Perl과 다를 수 있다는 것입니다. 이렇게 말하면 확인할 수 있습니다
which perl
./xREPredoTop.pl
예를 들어 이렇게 된다고 하면
/usr/bin/perl -w ./xREPredoTop.pl
하지만 당신이 말하면 그것은 perl ./xREPredoTop.pl
바뀔 수도 있습니다
/usr/local/bin/perl ./xREPredoTop.pl
그리고 경로를 변경하기 위해 어떤 방식으로든 다르게 구성하는 것도 가능합니다.