Suppress MOTD for non-interactive shells

Prevent profile scripts from printing the MOTD in non-interactive contexts. Add a tty check ([ -t 1 ] || return 0) to the generated /etc/profile.d/00_lxc-details.sh in alpine-install.func and install.func so the banner only shows for interactive sessions. In core.func, source /etc/profile.d/*.sh with stdout redirected to /dev/null so environment/PATH exports still apply but any banner output is suppressed when loading profiles programmatically.
This commit is contained in:
MickLesk
2026-05-22 08:02:40 +02:00
parent 2c9f6c5305
commit 9f72815ed7
3 changed files with 8 additions and 4 deletions
+4 -2
View File
@@ -140,10 +140,12 @@ ensure_profile_loaded() {
[[ -n "${_PROFILE_LOADED:-}" ]] && return
command -v pveversion &>/dev/null && return
# Source all profile.d scripts to ensure PATH is complete
# Source all profile.d scripts to ensure PATH is complete.
# Redirect stdout to suppress banner/MOTD output (e.g. 00_lxc-details.sh)
# while still allowing env/PATH exports to take effect.
if [[ -d /etc/profile.d ]]; then
for script in /etc/profile.d/*.sh; do
[[ -r "$script" ]] && source "$script" || true
[[ -r "$script" ]] && source "$script" >/dev/null || true
done
fi