CentOS下Shell脚本运行Fortran可执行文件提示找不到文件求助
解决CentOS脚本运行时找不到Fortran可执行文件的问题
这个问题我之前也碰到过,本质是系统查找可执行文件的路径规则在搞鬼——当你在脚本里直接写fortran_file.x时,系统会去$PATH环境变量定义的目录列表里找这个文件,但默认情况下,当前工作目录(.)并不在$PATH里,所以哪怕文件和脚本在同一目录,系统也认不出来。
下面给你几个靠谱的解决方法,按推荐程度排序:
1. 使用相对路径调用(最简单直接)
把脚本里的命令改成明确指定当前目录的相对路径:
timeout ${maxtime}s ./fortran_file.x
./告诉系统“就在当前目录找这个可执行文件”,能快速解决问题。
2. 用脚本所在目录的绝对路径调用(最健壮)
如果之后你可能会在其他目录运行这个脚本,上面的方法就失效了。这时候可以先获取脚本自身所在的目录,再用这个路径去调用可执行文件:
# 获取脚本所在的绝对路径 SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &> /dev/null && pwd) # 调用同一目录下的可执行文件 timeout ${maxtime}s "$SCRIPT_DIR/fortran_file.x"
这样不管你在系统哪个位置运行脚本,都能精准找到目标文件。
3. 临时把当前目录加入PATH(不推荐,有安全风险)
在脚本开头添加一行,把当前目录临时加入系统的可执行文件搜索路径:
export PATH="$PATH:." timeout ${maxtime}s fortran_file.x
⚠️ 注意:这种方法有安全隐患——如果当前目录存在和系统命令同名的恶意脚本,可能会被误执行,所以只在测试环境临时用用就行。
额外检查点
别忘了确认fortran_file.x有执行权限,编译后如果权限不够也会报类似错误:
chmod +x fortran_file.x
内容的提问来源于stack exchange,提问作者JohnDoe122
相关产品推荐
相关产品推荐

