]> git.ipfire.org Git - thirdparty/systemd.git/commit
profile.d: don't bail if $SHELL_* variables are unset
authorTobias Klauser <tklauser@distanz.ch>
Wed, 11 Dec 2024 14:10:39 +0000 (15:10 +0100)
committerLuca Boccassi <luca.boccassi@gmail.com>
Wed, 11 Dec 2024 18:33:41 +0000 (18:33 +0000)
commit12e33d332b3f8754f4d5d0d21d5d3f0de8adc54c
treefdd469fcfecee3f18e007b64221b7f280f62e784
parent9948b4668c992611de2be5c58845a7070e5af032
profile.d: don't bail if $SHELL_* variables are unset

If - for whatever reason - a script uses set -u (nounset) and includes
/etc/profile.d/70-systemd-shell-extra.sh (e.g. transitively via
/etc/profile) the script would fail with:

    /etc/profile.d/70-systemd-shell-extra.sh: line 15: SHELL_PROMPT_PREFIX: unbound variable

For example:

    $ cat > foo.sh <<EOF
    #!/bin/sh
    set -u

    source /etc/profile
    EOF
    $ chmod 700 foo.sh
    $ ./foo.sh
    /etc/profile.d/70-systemd-shell-extra.sh: line 15: SHELL_PROMPT_PREFIX: unbound variable

Fix this by using shell parameter substitution[^1] (which is a POSIX
shell concept) to set the $SHELL_* variables to the empty string if
undefined.

[^1]: https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/V3_chap02.html
profile.d/70-systemd-shell-extra.sh