diff --git a/profile.d/80-systemd-osc-context.sh b/profile.d/80-systemd-osc-context.sh index cfc8795d32..7d4b9a77f1 100644 --- a/profile.d/80-systemd-osc-context.sh +++ b/profile.d/80-systemd-osc-context.sh @@ -28,27 +28,27 @@ __systemd_osc_context_escape() { # uuids, id128, hostnames, usernames, since they all come with syntax # requirements that exclude \ and ; anyway. This hence primarily is about # escaping the current working directory. - echo "$1" | sed -e 's/\\/\\x5x/g' -e 's/;/\\x3b/g' + echo "$1" | sed -e 's/\\/\\x5c/g' -e 's/;/\\x3b/g' -e 's/[[:cntrl:]]/⍰/g' } __systemd_osc_context_common() { if [ -f /etc/machine-id ]; then - printf ";machineid=%s" "$(&-); then + printf "\033]3008;end=%.64s;exit=failure;status=%d;signal=SIG%s\033\\" "$systemd_osc_context_cmd_id" "$systemd_exitstatus" "$systemd_signal" elif [ "$systemd_exitstatus" -ne 0 ]; then - printf "\033]3008;end=%s;exit=failure;status=%s\033\\" "$systemd_osc_context_cmd_id" $((systemd_exitstatus)) + printf "\033]3008;end=%.64s;exit=failure;status=%d\033\\" "$systemd_osc_context_cmd_id" $((systemd_exitstatus)) else - printf "\033]3008;end=%s;exit=success\033\\" "$systemd_osc_context_cmd_id" + printf "\033]3008;end=%.64s;exit=success\033\\" "$systemd_osc_context_cmd_id" fi fi @@ -58,7 +58,7 @@ __systemd_osc_context_precmdline() { fi # Create or update the shell session - printf "\033]3008;start=%s%s;type=shell;cwd=%s\033\\" "$systemd_osc_context_shell_id" "$(__systemd_osc_context_common)" "$(__systemd_osc_context_escape "$PWD")" + printf "\033]3008;start=%.64s%s;type=shell;cwd=%.255s\033\\" "$systemd_osc_context_shell_id" "$(__systemd_osc_context_common)" "$(__systemd_osc_context_escape "$PWD")" # Prepare cmd id for next command read -r systemd_osc_context_cmd_id