从shell运行fortran代码不起作用

时间:2019-09-29 03:41:53

标签: linux shell

我想从CentOS linux上的shell脚本运行一些fortran代码。我这样编译了fortran文件:gfortran -ffixed-line-length-none -O3 -o fortran_file.x fortran_file.f,然后在.scr文件中有以下代码行:timeout {$maxtime}s fortran_file.x,其中maxtime作为外部参数传递。该代码在另一台计算机上运行良好,因此我很确定没有任何(重大)错误,但是当我以./code.scr的身份运行.scr代码时,出现此错误:timeout: failed to run command ‘fortran_file.x’: No such file or directory,尽管{ {1}}显然与.scr代码位于同一目录中。有谁知道我该如何解决?谢谢!

1 个答案:

答案 0 :(得分:1)

程序timeout只会执行您提供的命令:

NAME
       timeout - run a command with a time limit

SYNOPSIS
       timeout [OPTION] DURATION COMMAND [ARG]...
       timeout [OPTION]

DESCRIPTION
       Start COMMAND, and kill it if still running after DURATION.

您的命令很简单

fortran_file.x

仅当在可执行文件搜索路径($PATH)中可以找到程序时,它才会启动程序。显然,事实并非如此。因此,您需要将工作目录添加到$PATH

export PATH="$(pwd):$PATH"

或者更好的是,只需使用./来引用工作目录中的程序,

timeout {$maxtime}s ./fortran_file.x

如果您的原始行在其他系统上工作,则可能是由于工作目录位于$PATH中,或者由于某种非典型外壳将命令解释为您所期望的(Windows这样做了,对于实例)。