Link 从原始目录执行的二进制文件

Link a binary to execute from it's orignal directory

我有一个用C写的程序,它的目录结构是这样的:

root/
    program.sh
    textures/
        texture1.png

program.sh 以如下方式导入纹理:load_textures("./textures/texture1.png")(相对路径)。因此,该程序仅在我从 root 目录执行 program.sh 时才有效。

我想创建一个 link 到 program.sh 这样,无论何时执行 link,我都能够从根目录执行 program.sh。也就是说,我要在根目录外执行program.sh

现在,我希望有一个解决方案可以在不更改源代码的情况下执行此操作(如果有办法的话),否则,在当前情况下,您如何建议我在 C 中打开 files/textures?

有一个类似的问题 here,但没有人回答。

从评论中可以清楚地看出,目标是从不同的目录执行程序,但程序的当前工作目录指向它自己的目录。

虽然这个 可以 在 C 中完成(在 POSIX 系统中,由于 .sh 扩展,通过 chdirexecvp 系统调用),它在包装器 shell 脚本中更容易实现,如下所示:

#!/bin/sh

pushd /path/to/executable
./program.sh $@
popd