簡體   English   中英

程序可以在終端上正常運行,但是不能在Shell腳本中運行

[英]Program runs fine from the terminal, but does not work from a shell script

我在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

誰能幫我解決這個問題?

看來Linux無法找到samtools

解決此問題的方法:在一開始就聲明這一點(將pwd更改為從pwd指向可執行文件的路徑)

export set CURRENT_DIR=`pwd`

並在調用samtools時使用

$CURRENT_DIR/samtools

注意1:當Shell腳本從/usr/bin/sh執行時,您有責任告訴Shell腳本確切的路徑。 嘗試使用命令在控制台上回顯路徑,如果這樣做沒有幫助,如下所示:

echo `pwd`

注意2:上方反引號的使用位於鍵盤左上角。

注意3: export set用於在Shell腳本中存儲全局變量,以便此命令之后出現的命令可以使用此變量並在需要時進行更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM