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
扩展,通过 chdir
和 execvp
系统调用),它在包装器 shell 脚本中更容易实现,如下所示:
#!/bin/sh
pushd /path/to/executable
./program.sh $@
popd
我有一个用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
扩展,通过 chdir
和 execvp
系统调用),它在包装器 shell 脚本中更容易实现,如下所示:
#!/bin/sh
pushd /path/to/executable
./program.sh $@
popd