Bash 让二进制文件相信它在另一个目录中

Bash 让二进制文件相信它在另一个目录中,bash,filesystems,executable,Bash,Filesystems,Executable,在Linux系统上,我有一个二进制文件(bin.exe),需要读取输入文件(input.cfg),其中指定了其他数据文件(data.txt)的名称。通常二进制文件、输入文件和数据文件都在同一目录中。现在,出于组织原因,我需要二进制文件位于$SOMEPATH/bin中,而输入和数据文件位于$SOMEPATH/input中 我不知道怎么做。如果我尝试 $SOMEPATH/bin/bin.exe $SOMEPATH/input/input.cfg 我明白了 一种解决方案是在input.cfg中包含“

在Linux系统上,我有一个二进制文件(bin.exe),需要读取输入文件(input.cfg),其中指定了其他数据文件(data.txt)的名称。通常二进制文件、输入文件和数据文件都在同一目录中。现在,出于组织原因,我需要二进制文件位于$SOMEPATH/bin中,而输入和数据文件位于$SOMEPATH/input中

我不知道怎么做。如果我尝试

$SOMEPATH/bin/bin.exe $SOMEPATH/input/input.cfg
我明白了

一种解决方案是在input.cfg中包含“data.txt”相对路径的绝对值,但二进制文件不接受这一点

我想用某种方式愚弄二进制文件,让它认为它在$SOMEPATH/input中,所以我就这么做了

$SOMEPATH/bin/bin.exe input.cfg
这是可行的,但我不知道这是否可行。有什么提示吗?

(cd$SOMEPATH/input&&$SOMEPATH/bin/bin.exe input.cfg)

这是假设程序依赖于当前工作目录来查找文件。例如,如果程序试图通过查阅
/proc//exe
在与可执行文件相同的位置找到它们,那么您可能运气不佳。

(cd$SOMEPATH/input&&$SOMEPATH/bin/bin.exe input.cfg)


这是假设程序依赖于当前工作目录来查找文件。例如,如果程序试图通过查阅
/proc//exe
在与可执行文件相同的位置找到它们,那么您可能运气不好。

是的,成功了!谢谢!最后一个问题;输出文件是在$SOMEPATH/input中生成的,我如何才能使它们在其他任意目录中生成???@flow:dependens-如果程序坚持在
即当前工作目录中打开其输出文件,那么您可能运气不好。此神秘文件
bin.exe
是否有任何文档,例如,可能有用于指定输入和输出目录等的命令行选项?没有,不幸的是,如果二进制文件完全神秘,则没有二进制文件的文档(是内部开发的旧程序),您可能需要在其上运行
strace
,以查看它试图以何种方式打开文件。也许它在你不知道的地方检查,这可能对你有用。我不这么认为。这源于我们小组开发的一个旧C代码,所以根本不应该是火箭科学。我认为如果我把输出文件也放在同一个输入目录中,这对我来说是合适的,谢谢,这就成功了!谢谢!最后一个问题;输出文件是在$SOMEPATH/input中生成的,我如何才能使它们在其他任意目录中生成???@flow:dependens-如果程序坚持在
即当前工作目录中打开其输出文件,那么您可能运气不好。此神秘文件
bin.exe
是否有任何文档,例如,可能有用于指定输入和输出目录等的命令行选项?没有,不幸的是,如果二进制文件完全神秘,则没有二进制文件的文档(是内部开发的旧程序),您可能需要在其上运行
strace
,以查看它试图以何种方式打开文件。也许它在你不知道的地方检查,这可能对你有用。我不这么认为。这源于我们小组开发的一个旧C代码,所以根本不应该是火箭科学。我想如果我把输出文件也放在同一个输入目录中,这对我很合适,谢谢
$SOMEPATH/bin/bin.exe input.cfg