我有一些脚本,脚本中的一些命令是这样的
./executable arg1 arg2 .. argn
我想把上面的命令改成
LD_PRELOAD=/some/lib ./executable my_arg1 my_argn arg1 arg2 argn; some_other_command
更改脚本的一种方法,但我不想这样做,而是想拦截这些命令,更改这些命令并运行它们。我怎样才能做到这一点?
答案1
首先,将现有的可执行文件移动到新位置:
mv ./executable ./executable.original
其次,在其中创建一个 shell 脚本。将以下命令放入名为的新文件中./executable
:
#!/bin/sh
LD_PRELOAD=/some/lib ./executable.original my_arg1 my_argn "$@"
some_other_command
shell 将替换"$@"
调用arg1 arg2 argn
程序提供的咒语。
第三,在新文件上设置执行位:
chmod a+rx ./executable
答案2
在 bash 中你可以有时髦的函数名称,所以这应该完全符合你的要求:
./executable() {
LD_PRELOAD=/some/lib command ./executable my_arg1 my_argn arg1 arg2 argn
}
当然它不会拦截executable
或/usr/bin/executable