我在Linux Mint上。
我有一个名为samtools的程序,它存储在我桌面上的一个文件夹中。我已将可执行文件的路径添加到$ PATH变量中。换句话说,我的本地〜/ .bashrc文件有一行:
export PATH="~/Desktop/samtools/samtools-1.1:$PATH"
名为samtools的可执行文件位于此文件夹中。
因此,当我尝试从命令行启动它时,只需输入" samtools"有用。当我在命令行中键入可执行文件的直接路径时,它也有效。
但是,当我尝试从shell脚本启动它时,它不会启动,并且说没有找到这样的文件或目录。
实际上,我正在尝试使用另一个使用一些shell脚本来预处理某些数据的软件。我得到的错误看起来像这样:
Indexing...
./RD_capture//process_one_capture.sh: 17: ./RD_capture//process_one_capture.sh: samtools: not found
Sorting...
./RD_capture//process_one_capture.sh: 20: ./RD_capture//process_one_capture.sh: samtools: not found
Piling up...
./RD_capture//process_one_capture.sh: 23: ./RD_capture//process_one_capture.sh: samtools: not found
Shell代码如下所示:
echo "Indexing..."
samtools index $INPUTDIR/$sample.bam
#Then we sort them
echo "Sorting..."
samtools sort $INPUTDIR/$sample.bam $TMPDIR/$sample.sorted
#Finally we pile them up
echo "Piling up..."
samtools mpileup $TMPDIR/$sample.sorted.bam | cut -f 1-4 > $OUTPUT/$(basename $sample .bam).pile
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
看起来Linux无法找到samtools
。
解决此问题:
在开头声明这一点(使用导致pwd
可执行文件的路径更改pwd
export set CURRENT_DIR=`pwd`
并且在调用samtools时使用
$CURRENT_DIR/samtools
注1:当负责从/usr/bin/sh
执行shell脚本时,您有责任告诉shell脚本的确切路径。尝试使用命令在控制台上回显路径,如果这没有帮助,如下所示:
echo `pwd`
注2:使用上面的后面引号,它位于键盘的左上角。
注3: export set
用于在shell脚本中存储全局变量,以便在此命令之后出现的命令可以使用此变量并在需要时更新它。