3

Я загрузил некоторое программное обеспечение (называемое samtools), и оно хранится в папке на рабочем столе. Затем я добавил путь к исполняемому файлу в переменную окружения PATH . Другими словами, мой файл ~/.bashrc имеет следующую строку:

export PATH="~/Desktop/samtools/samtools-1.1:$PATH".

Исполняемый файл с именем samtools находится в этой папке.

Когда я пытаюсь запустить его из командной строки, просто набрав samtools , это работает. Это также работает, когда я использую полный путь к исполняемому файлу.

Тем не менее, когда я пытаюсь запустить его из сценария оболочки, он не запускается и сообщает: ни No such file или Directory not found .

Может ли кто-нибудь помочь мне решить эту проблему?

РЕДАКТИРОВАТЬ: Как некоторые люди просили.

Точное сообщение об ошибке:

Realigning using Bowtie2...
./RP_capture//realign/filter_long_inserts.sh: 29: ./RP_capture//realign/filter_long_inserts.sh: samtools: not found
./RP_capture//realign/filter_long_inserts.sh: 29: ./RP_capture//realign/filter_long_inserts.sh: samtools: not found
Could not locate a Bowtie index corresponding to basename "./aux/chr1.fa"

Я также добавил echo $PATH в мой скрипт, и вывод кажется правильным. Путь к samtools есть.

это пример одного из многих вызовов samtools из скрипта.

samtools index $OUTPUT/realignments/$file.abnormal.realign.bowtie.bam

Мне действительно удалось решить проблему с помощью

export set SAMTOOLS_DIR="/home/laba/Desktop/samtools/samtools-1.1"

внутри скрипта, а затем вызывая samtools следующим образом:

$SAMTOOLS_DIR/samtools [parameters]

Как ни странно, другой вызов двоичного скрипта работает только с явным указанием пути к исполняемому файлу. Без использования set .

2 ответа2

1

Установка переменной каталога следующим образом:

export set SAMTOOLS_DIR="/home/laba/Desktop/samtools/samtools-1.1"

И затем вызывая exacutable из скрипта следующим образом:

$SAMTOOLS_DIR/samtools [parameters]

решает проблему

0

Попробуйте добавить в скрипт echo $ PATH, чтобы убедиться, что путь такой, какой, по вашему мнению, он есть, и убедиться, что сам скрипт может работать (установлен исполняемый бит, исправьте shebang #!/bin/sh или что-то в первой строке). Если больше ничего не работает, вы можете попробовать связать вызов вызова скрипта.

Обновить

Из сообщения об ошибке ясно, что проблема возникает в подпрограмме, которая вызывает samtools самостоятельно:

,/RP_capture//realign/filter_long_inserts.sh в строке 29

Таким образом, проблема заключается в том, что при вызове samtools отсутствует либо PATH либо какой-либо другой переменный компонент.

Как вы узнали, этот компонент, по всей вероятности, SAMTOOLS_DIR .

Другая возможность, заслуживающая изучения, заключается в том, что проблема заключается в том, что пользователь запускает скрипт (например, через sudo или тому подобное). В этом случае значение PATH установленное на «~/Desktop ...», где «~» означает «Домашний пользователь текущего пользователя », будет означать две разные вещи для вас и для пользователя, выполняющего скрипт. В этом случае вы должны установить PATH в

/home/laba/Desktop/samtools/samtools-1.1:$PATH

вместо

~/Desktop/samtools/samtools-1.1:$ PATH

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .