Use $SHELL instead of hardcoding /bin/sh in ratpoison. Patch by Mark H Weaver . --- ratpoison/src/actions.c.orig 2014-09-14 16:46:08.000000000 +0200 +++ ratpoison/src/actions.c 2015-08-06 15:00:54.951575260 +0200 @@ -228,12 +228,12 @@ add_command ("escape", cmd_escape, 1, 1, 1, "Key: ", arg_KEY); add_command ("exec", cmd_exec, 1, 1, 1, - "/bin/sh -c ", arg_SHELLCMD); + "$SHELL -c ", arg_SHELLCMD); add_command ("execa", cmd_execa, 1, 1, 1, - "/bin/sh -c ", arg_SHELLCMD); + "$SHELL -c ", arg_SHELLCMD); add_command ("execf", cmd_execf, 2, 2, 2, "frame to execute in:", arg_FRAME, - "/bin/sh -c ", arg_SHELLCMD); + "$SHELL -c ", arg_SHELLCMD); add_command ("fdump", cmd_fdump, 1, 0, 0, "", arg_NUMBER); add_command ("focus", cmd_next_frame, 0, 0, 0); @@ -367,7 +367,7 @@ add_command ("unsetenv", cmd_unsetenv, 1, 1, 1, "Variable: ", arg_STRING); add_command ("verbexec", cmd_verbexec, 1, 1, 1, - "/bin/sh -c ", arg_SHELLCMD); + "$SHELL -c ", arg_SHELLCMD); add_command ("version", cmd_version, 0, 0, 0); add_command ("vsplit", cmd_v_split, 1, 0, 0, "Split: ", arg_STRING); @@ -2671,6 +2671,9 @@ pid = fork(); if (pid == 0) { + char *shell_path; + char *shell_name; + /* Some process setup to make sure the spawned process runs in its own session. */ putenv(current_screen()->display_string); @@ -2700,7 +2703,18 @@ /* raw means don't run it through sh. */ if (raw) execl (cmd, cmd, (char *)NULL); - execl("/bin/sh", "sh", "-c", cmd, (char *)NULL); + + shell_path = getenv ("SHELL"); + if (shell_path == NULL) + shell_path = "/bin/sh"; + + shell_name = strrchr (shell_path, '/'); + if (shell_name == NULL) + shell_name = shell_path; + else + shell_name++; + + execl(shell_path, shell_name, "-c", cmd, (char *)NULL); _exit(EXIT_FAILURE); } --- ratpoison/src/events.c.orig 2014-09-14 16:46:23.000000000 +0200 +++ ratpoison/src/events.c 2015-08-06 15:02:17.287578780 +0200 @@ -919,7 +919,7 @@ { /* Report any child that didn't return 0. */ if (cur->status != 0) - marked_message_printf (0,0, "/bin/sh -c \"%s\" finished (%d)", + marked_message_printf (0,0, "$SHELL -c \"%s\" finished (%d)", cur->cmd, cur->status); list_del (&cur->node); free (cur->cmd); --- ratpoison/src/messages.h.orig 2014-04-09 01:22:08.000000000 +0200 +++ ratpoison/src/messages.h 2015-08-06 15:04:14.759583801 +0200 @@ -39,7 +39,7 @@ #define MESSAGE_PROMPT_SWITCH_TO_WINDOW "Switch to window: " #define MESSAGE_PROMPT_NEW_WINDOW_NAME "Set window's title to: " -#define MESSAGE_PROMPT_SHELL_COMMAND "/bin/sh -c " +#define MESSAGE_PROMPT_SHELL_COMMAND "$SHELL -c " #define MESSAGE_PROMPT_COMMAND ":" #define MESSAGE_PROMPT_SWITCH_WM "Switch to wm: " #define MESSAGE_PROMPT_XTERM_COMMAND MESSAGE_PROMPT_SHELL_COMMAND TERM_PROG " -e " ooltip'>* po/doc/guix-cookbook.uk.po: New file. * po/doc/local.mk: Add uk cookbook. * doc/local.mk: Add uk cookbook. * po/guix/fa.po: New file. * po/guix/uk.po: New file. * po/guix/LINGUAS: Add fa and uk. Julien Lepiller 2022-02-04nls: Update translations....* po/doc/guix-cookbook.pt_BR.po: New file. * po/doc/local.mk: Add it. * doc/local.mk: Add pt_BR cookbook. Julien Lepiller 2022-01-09nls: Update translations....* po/doc/guix-cookbook.fi.po: New file. * po/doc/guix-manual.fi.po: New file. * po/doc/local.mk: Add them. * doc/local.mk: Add them. * po/guix/fi.po: New file. * po/guix/LINGUAS: Add it. Julien Lepiller 2021-10-17nls: Update translations.Julien Lepiller 2021-09-02nls: Update translations....* po/packages/it.po: New file. * po/packages/LINGUAS: Add `it'. * po/*/*.po: Update translations. Julien Lepiller 2021-08-04nls: Update translations....* po/doc/guix-cookbook.ru.po: New file. * po/doc/guix-cookbook.sk.po: New file. * po/*/*.po: Update translations. * doc/local.mk (COOKBOOK_LANGUAGES): Add ru and sk. (info_TEXINFOS): Add Russian and Slovak cookbooks. * po/doc/local.mk (DOC_COOKBOOK_PO_FILES): Add Russian and Slovak po files. Julien Lepiller