mirror of
https://github.com/systemd/systemd.git
synced 2024-12-22 17:35:35 +03:00
12e33d332b
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
26 lines
855 B
Bash
26 lines
855 B
Bash
# shellcheck shell=sh
|
|
|
|
# This file is part of systemd.
|
|
#
|
|
# systemd is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU Lesser General Public License as published by
|
|
# the Free Software Foundation; either version 2.1 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# Import the additional shell prompt prefix and suffix strings into $PS1, and
|
|
# show the shell welcome string. These can be provisioned as system or service
|
|
# credentials shell.prompt.prefix, shell.prompt.suffix and shell.welcome, and
|
|
# are propagated into these environment variables by pam_systemd(8).
|
|
|
|
if [ -n "${SHELL_PROMPT_PREFIX-}" ]; then
|
|
PS1="$SHELL_PROMPT_PREFIX$PS1"
|
|
fi
|
|
|
|
if [ -n "${SHELL_PROMPT_SUFFIX-}" ]; then
|
|
PS1="$PS1$SHELL_PROMPT_SUFFIX"
|
|
fi
|
|
|
|
if [ -n "${SHELL_WELCOME-}" ]; then
|
|
printf '%b\n' "$SHELL_WELCOME"
|
|
fi
|