#include #include #include #include #include "nls.h" #include "c.h" #include "xalloc.h" #include "exec_shell.h" #define DEFAULT_SHELL "/bin/sh" void __attribute__((__noreturn__)) exec_shell(void) { const char *shell = getenv("SHELL"), *shell_basename; char *arg0; if (!shell) shell = DEFAULT_SHELL; shell_basename = basename(shell); arg0 = xmalloc(strlen(shell_basename) + 2); arg0[0] = '-'; strcpy(arg0 + 1, shell_basename); execl(shell, arg0, NULL); err(EXIT_FAILURE, _("failed to execute %s"), shell); }