Linux中没有此类文件或目录错误

bvn4nwqk  于 2022-12-11  发布在  Linux
关注(0)|答案(3)|浏览(275)

最近我安装了一个叫“paradigm”的程序。在程序路径(/home/hora/Paradigm/)有一个目录“测试数据”(/home/hora/Paradigm/testdata),它包含一个运行应用程序示例测试的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
ryevplcw

ryevplcw1#

我相信这个脚本的作者希望您将HOME设置为~/Paradigm,或者他们希望您直接安装在您的HOME目录(~)而不是~/Paradigm。无论哪种方式,这都是他们的错误。一个简单的修复方法是将安装移到~,或者尝试:
env HOME=$(pwd) ./runtests.sh
(Note env不是必需的,除非您运行的是csh系列shell(如cshtcsh)。设置HOME将更改在不使用参数调用cd时的行为,并使HOME的值成为目标目录。

kqlmhetl

kqlmhetl2#

这一行:

#!/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)来修复脚本,使其在任何位置工作。

z0qdvdin

z0qdvdin3#

我知道这是一个非常古老的问题,但我认为我的答案是相关的其他人没有找到他们的答案。
我从2000年开始在家庭服务器上使用Linux。最近,我将家庭服务器升级到64位架构(DELL R510 w/2@Xeon)。
我一直在用一个程序(text2pdf.c)。我忘记了在安装到64位系统之前清理和重新制作可执行文件。因此,我收到了同样的错误,但不是因为我在网上找到的所有答案中所述的原因。“which”和“type”没有给出任何线索,但使用“file”我给了我在编译时链接的库的信息,它们是2.4.32库。显然,在4.x64位内核上的旧32位库不起作用。makeclean,make(和makeinstall)清除了这个问题。
平安祝福,JQ

相关问题