2013-08-20 74 views
1

最近我安装了一个名为“范式”的程序。在程序路径(/ home/hora/Paradigm /)中有一个目录“testdata”(/ home/hora/Paradigm/testdata),其中包含一个运行应用程序示例测试的shell脚本。第一次安装程序我能够运行shell脚本(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

您的错误消息抱怨'../pathtabtabdadagg',它是**相对**路径。在这之前你是否在脚本中更改当前目录?如果是这样,请在执行此行之前更换,或将其更改为绝对路径。 – jam

+0

“pathwaytab2daifg”比我尝试在正确的位置运行脚本的位置高出一级,而且我没有改变任何事情。一切都在他们的位置,但我得到这个错误。 – hora

+0

@Jost我添加了脚本 – hora

回答

4

我相信这个剧本的作者要你设置HOME~/Paradigm,或者他们希望你能直接在你的主目录(~)安装,而不是~/Paradigm。无论哪种方式,这都是他们的错误。一个简单的修正可能是安装移动到~,或尝试:

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

(请注意,除非env你正在运行的csh家庭外壳如cshtcsh是没有必要的)。如果设置为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对不起,看我的编辑。我也意味着改变脚本,而不是改变你的shell中的目录。 :) – jam

相关问题