2013-08-20 3 views
1

Недавно я установил программу под названием «парадигма». В пути к программе (/ home/hora/Paradigm /) есть каталог «testdata» (/ home/hora/Paradigm/testdata), который включает в себя сценарий оболочки, который запускает пример теста приложения. В первый раз, когда я установил Я смог запустить сценарий оболочки (runtests.sh), но теперь, когда я пытаюсь запустить его, я получаю сообщение об ошибке «Нет такого файла или каталога», хотя файлы, упомянутые в этой ошибке, есть. Я уверен, что проблема связана с отсутствием моих знаний в Linux, и ваша помощь будет оценена по достоинству. Чтобы показать ситуацию:Нет такой ошибки файла или каталога в linux

[email protected]:~/Paradigm/testdata$ ./runtests.sh 
Testing node splitting [1/2], should take seconds 
diff: needs_split_1.out: No such file or directory 
./runtests.sh: line 6: ../pathwaytab2daifg: No such file or directory 

Но если список содержимого каталога указанные файлы есть:

[email protected]:~/Paradigm/testdata$ ls 
complex_family_pathway.tab  needs_split_1.cfg   needs_split_2.out   runtests.sh     small_disconnected_pathway.tab 
complex_family_pathway.tab.out needs_split_1.out   needs_split_2.pathway.tab 

И потом:

[email protected]:~/Paradigm$ ls 
common.h   configuration.o  
evidencesource.o helperScripts makefile   
pathwaytab2daifg.cpp pathwaytab.h  test1 configuration.cpp 
evidencesource.cpp externVars.cpp main.cpp  paradigm   
pathwaytab2daifg.o pathwaytab.o  testdata configuration.h 
evidencesource.h externVars.o  main.o   pathwaytab2daifg 
pathwaytab.cpp  README.mediawiki 

Это содержание сценария (проблематичная часть):

#!/bin/bash 

set -o pipefail 
cd 
echo Testing node splitting [1/2], should take seconds 
../pathwaytab2daifg needs_split_1.pathway.tab needs_split_1.cfg \ 
    | diff needs_split_1.out - || exit 1 
+2

Ваше сообщение об ошибке жалуется на '../ pathwaytab2daifg', который является ** относительным ** путем. Вы меняете текущий каталог в своем сценарии до этого момента? Если это так, либо измените значение перед выполнением этой строки, либо измените ее на абсолютный путь. – jam

+0

«pathwaytab2daifg» ровно на один уровень выше, чем когда я пытаюсь запустить сценарий, я имею в виду в нужном месте, и я ничего не изменил. Все на их месте, но я получаю эту ошибку. – hora

+0

@Jost Я добавил скрипт – hora

ответ

4

Я считаю, что авторы этого сценария хотят установить HOME в ~/Paradigm, или они ожидают, что вы установить непосредственно в вашем домашнем каталоге (~), а не в ~/Paradigm. В любом случае, это ошибка с их стороны. Простое исправление может перенести установку на ~ или попробовать:

env HOME=$(pwd) ./runtests.sh

(Обратите внимание, что env не является необходимым, если вы не работаете в csh семьи оболочки, такие как csh или tcsh). Значение HOME изменяет поведение cd при вызове без аргументов и делает значение HOME в целевом каталоге.

+0

На самом деле установка была настолько сложной, что я предпочитаю не делать этого еще раз. Но большое спасибо, ваше второе решение работает отлично. Я имею в виду, что все предложения здесь хорошо работали, но я до сих пор не понимаю, почему эта ошибка не была получена в предыдущий раз. – hora

3

Эта линия:

#!/bin/bash 

set -o pipefail 

cd #<----- here! 

echo Testing node splitting [1/2], should take seconds 
../pathwaytab2daifg needs_split_1.pathway.tab needs_split_1.cfg \ 
    | diff needs_split_1.out - || exit 1 

меняет каталог на ~/, который является аргументом по умолчанию cd, если вы не пройти путь к нему (см here).

Вы можете исправить скрипт для работы из любой точки мира, если хотите, указав cd абсолютный путь, то есть изменив это значение cd на cd /home/hora/Paradigm/testdata.

+0

Большое спасибо. Но в отношении вашего предложения вернуться к тому, где я был раньше, я пробовал каждый путь, но он не работал, и я ничего не изменил в скрипте. Мне очень понравилось, откуда эта проблема. – hora

+1

@hora Извините, см. Мое редактирование. Я также хотел изменить сценарий, а не менять каталог в вашей оболочке. :) – jam

Смежные вопросы