需要 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.
真的很困惑为什么这不起作用。
答案1
我能想到的两种可能性:
通常的情况是,您正在从 cron 之类的东西运行 bash 脚本,其中您的用户配置文件脚本尚未运行并设置 $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 中声明的 perl 不同。你可以通过说来检查这一点
which perl
例如,如果你说它./xREPredoTop.pl
变成
/usr/bin/perl -w ./xREPredoTop.pl
但如果你说它perl ./xREPredoTop.pl
可能会变成
/usr/local/bin/perl ./xREPredoTop.pl
并且可以通过某种方式进行不同的配置来改变路径。