On Tue, 13 Nov 2018 20:22:16 +0000 Dmitry Bogatov <kact...@debian.org> wrote:
>
> [Adding systemd maintainers into thread]
> (We are discussing #826214)
>
> [2018-11-11 22:37] Michael Biebl <bi...@debian.org>
> > > #!/lib/init/init-d-script?
> >
> > It doesn't work with #!/lib/init/init-d-script either.
> >
> > Only
> > ============================
> > #!/bin/sh
> >
> > if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
> > set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
> > fi
> > ============================
> > currently works wrt to systemctl redirection.
>
> At least it does not feel magic. In case of #!/lib/init/init-d-script,
> $0 = /lib/init/init-d-script; in case of sourcing $0 is path to script
> (/etc/init.d/foo).
>
> Now, issue seems to be /lib/lsb/init-functions.d/40-systemd from
> bin:systemd. On line 7 we read:
>
> prog=${0##*/}
>
> As far as I know, there is no way to modify "$0". So we have two
> options:
>
> * have systemd folks use `${__init_d_script_name##*/}' in
> `40-systemd' instead of `$0'
>
> * write wrapper in C, which sets $0 to value, expected by `40-systemd'.
> Actually, there is number of utilities floating around, which set $0
> to arbitrary value (`chpst' from bin:runit is one of them :)), but we
> do not want to add new dependency to essentail sysvinit-utils, don't
> we?
>
> Opinions?
>
>

Hi,

I noticed the new snippet in the man page of experimental version uses the

#! /usr/bin/env /lib/init/init-d-script

shebang, which doesn't work with systemd redirection. I don't know any packages in the archive using /lib/init/init-d-script in the shebang line currently but I fear some scripts may start to use the new variant (thus hitting #826214 again).

Can you please consider changing it with the snippet in the old /etc/init.d/skeleton (the one using the INIT_D_SCRIPT_SOURCED trick), at least until a better solution can be found for this or #826214)

Reply via email to