[英]Python script runs fine from terminal but crashes when run from crontab
[英]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.