]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Drop `machine-id` OSC event field if /etc/machine-id doesn't exist
authorJustin Kromlinger <hashworks@archlinux.org>
Wed, 8 Oct 2025 14:55:09 +0000 (16:55 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 9 Oct 2025 07:08:13 +0000 (09:08 +0200)
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

profile.d/80-systemd-osc-context.sh

index 13f04994ce2cd30beed348efbac5dc68a01471d9..a7392eedba20570ce03ee4fbe70431b30de6120e 100644 (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() {