【发布时间】:2016-08-26 10:43:35
【问题描述】:
当我在脚本中执行某些操作时,例如
rlwrap -f words.txt LD_PRELOAD=mylib.so command "$@"
我总是得到类似的东西
rlwrap: error: cannot execute LD_PRELOAD=mylib.so no such file or directory
即使该文件完全存在并且删除 rlwrap 也可以正常工作。
如何将 LD_PRELOAD 放入 rlwrap?基本上我想让 mylib.so 只适用于我的'command'。
我确实尝试将 LD_PRELOAD=mylib.so 从 rlwrap 中放入,它运行,但 LD_PRELOAD 并未如我所愿适用于 command。
【问题讨论】:
-
在我看来
rlwrap正在将LD_PRELOAD=mylib.so作为命令。你试过LD_PRELOAD=mylib.so rlwrap -f words.txt command "$@" -
@Mort 是的,但那没用。然后 LD_PRELOAD 没有传递到命令中
-
嗯。在我的系统上,
LD_PRELOAD=/lib/libc.so.6 rlwrap sh -c 'echo $LD_PRELOAD'打印/lib/libc.so.6。如果它在您的系统上执行相同的操作,rlwrap正在将LD_PRELOAD传递到 rlwrapped 命令的环境中 -
@HansLub 是的,但是链接器将
mylib.so与rlwrap链接,这是不希望的 -
@hek2mgl:这取决于。如果
mylib.so只定义了几个rlwrap不使用的符号(这是一种常见情况),那么这样做是完全可以的。
标签: linux bash ld-preload rlwrap