调用程序时覆盖第一个参数

Jul*_*mur 0 bash shell

当我调用二进制文件时,我需要覆盖第一个参数.

由于这是程序名称,我有两个解决方案:

  • 移动二进制文件并使用其新名称调用它; 要么
  • 创建一个别名(如果shell允许).

但是,有时我需要完全删除第一个参数.

我用C编写了一个简单的程序来完成这项工作:

#include <unistd.h>

int main(int argc, char **argv)
{
    return execve(argv[1], NULL, NULL);
}
Run Code Online (Sandbox Code Playgroud)

我有一个内置的方式来做shell吗?首选bash的解决方案.

tha*_*guy 5

您可以使用覆盖它exec -a,但不能将其设置为未设置.

例如,运行busyboxargv[0]设置为ls:

( exec -a ls busybox )
Run Code Online (Sandbox Code Playgroud)