首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序在终端上运行良好,但不使用shell脚本。

程序在终端上运行良好,但不使用shell脚本。
EN

Stack Overflow用户
提问于 2014-12-25 13:51:16
回答 1查看 1.1K关注 0票数 1

我在Linux上。

我有一个名为samtools的程序,它存储在我桌面上的一个文件夹中。我将可执行文件的路径添加到$PATH变量中。换句话说,我的本地~/..bashrc文件有一行:

代码语言:javascript
复制
export PATH="~/Desktop/samtools/samtools-1.1:$PATH"

名为samtools的可执行文件位于此文件夹中。

因此,当我尝试像一个简单的命令一样从命令行启动它时,只需输入"samtools“就可以了。当我在命令行中键入可执行文件的直接路径时,它也能工作。

但是,当我尝试从shell脚本启动它时,它不会启动,并且说没有这样的文件或目录,或者没有找到。

实际上,我试图使用另一个软件,它使用一些shell脚本来预处理一些数据。我所得到的错误如下所示:

代码语言:javascript
复制
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代码如下所示:

代码语言:javascript
复制
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

有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-25 13:57:08

看来Linux无法找到samtools

解决此问题的在开始时声明这一点(用从pwd到可执行文件的路径更改pwd )

代码语言:javascript
复制
export set CURRENT_DIR=`pwd`

在调用samtools时,请使用

代码语言:javascript
复制
$CURRENT_DIR/samtools

注释1: --您负责在shell脚本从/usr/bin/sh执行时告诉它到/usr/bin/sh脚本的确切路径。尝试使用命令回显控制台上的路径,如果这没有帮助,如下所示:

代码语言:javascript
复制
echo `pwd`

备注2:注释2:在键盘左上角使用背引号。

注释3: export set用于将全局变量存储在shell脚本中,以便在此命令之后出现的命令可以使用该变量,并在需要时进行更新。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27647790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档