Drop machine-id OSC event field if /etc/machine-id doesn't exist

While we can safely assume that `/proc/sys/kernel/random/boot_id`
exists, the same can't be said for `/etc/machine-id` in environments
where systemd is installed, but not running. An example would be OCI
containers like with the official Arch Linux image, see [0].

Without this check the prompt would constantly output `/etc/machine-id:
no such file or directory` with the OSC events introduced in dadbb34
(v258).

[0] https://gitlab.archlinux.org/archlinux/archlinux-docker/-/issues/107
This commit is contained in:
Justin Kromlinger
2025-10-08 16:55:09 +02:00
committed by Lennart Poettering
parent b97fccf0ce
commit 0fe45b98dd

View File

@@ -24,7 +24,10 @@ __systemd_osc_context_escape() {
}
__systemd_osc_context_common() {
printf ";user=%s;hostname=%s;machineid=%s;bootid=%s;pid=%s" "$USER" "$HOSTNAME" "$(</etc/machine-id)" "$(</proc/sys/kernel/random/boot_id)" "$$"
if [ -f /etc/machine-id ]; then
printf ";machineid=%s" "$(</etc/machine-id)"
fi
printf ";user=%s;hostname=%s;bootid=%s;pid=%s" "$USER" "$HOSTNAME" "$(</proc/sys/kernel/random/boot_id)" "$$"
}
__systemd_osc_context_precmdline() {