1

最近我安装了一个名为“paradigm”的程序。在程序路径 (/home/hora/Paradigm/) 中有一个目录“testdata” (/home/hora/Paradigm/testdata),其中包含一个运行应用程序示例测试的 shell 脚本。我第一次安装程序我能够运行shell脚本(runtests.sh),但现在我尝试运行它,我得到“没有这样的文件或目录”的错误,尽管错误提到的文件在那里。我确信问题是由于我缺乏对 linux 的了解,您的帮助将不胜感激。显示情况:

hora@serv:~/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

但是,如果我列出目录的内容,则提到的文件在那里:

hora@serv:~/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

接着:

 hora@serv:~/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
4

2 回答 2

4

我相信此脚本的作者希望您设置HOME~/Paradigm,或者他们希望您直接安装在 HOME 目录 ( ~) 而不是~/Paradigm. 无论哪种方式,这都是他们的错误。一个简单的解决方法可能是将安装移动到~,或尝试:

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

(请注意,env除非您正在运行csh家庭 shell,例如csh或,否则不需要tcsh)。设置HOME会更改不带参数调用时的行为,cd并使 HOME 的值成为目标目录。

于 2013-08-20T12:01:28.050 回答
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如果您不向其传递路径的默认参数(请参见此处)。

如果您愿意,可以通过提供cd绝对路径(即将该cd行更改为cd /home/hora/Paradigm/testdata.

于 2013-08-20T11:58:03.310 回答