<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>OSC 3008 on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/osc-3008/</link>
        <description>Recent content in OSC 3008 on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Tue, 23 Jun 2026 16:58:23 +0800</lastBuildDate><atom:link href="https://knightli.com/es/tags/osc-3008/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Qué es OSC 3008: señalización de contexto de terminal en systemd y solución de salida basura</title>
        <link>https://knightli.com/es/2026/06/23/osc-3008-systemd-terminal-context-explained/</link>
        <pubDate>Tue, 23 Jun 2026 16:58:23 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/06/23/osc-3008-systemd-terminal-context-explained/</guid>
        <description>&lt;p&gt;OSC 3008, cuyo nombre completo es &lt;code&gt;Hierarchical Context Signalling&lt;/code&gt;, es UAPI.15 dentro de las especificaciones de UAPI Group. Define un conjunto de secuencias de control de terminal que permiten a los programas informar al emulador de terminal sobre la jerarquía de contexto actual dentro de una sesión.&lt;/p&gt;
&lt;p&gt;En términos sencillos, intenta responder una pregunta cada vez más común en terminales Linux modernos: ¿en qué capa estás realmente?&lt;/p&gt;
&lt;p&gt;Por ejemplo, puedes hacer SSH desde tu máquina local a un servidor, entrar en un contenedor y después usar &lt;code&gt;run0&lt;/code&gt; o una herramienta similar para ejecutar un comando con privilegios elevados. Para ti sigue siendo una única ventana de terminal. Para el emulador de terminal, sin una señal adicional, es difícil saber si la salida actual viene de la máquina local, del host remoto, de un contenedor o de un comando elevado.&lt;/p&gt;
&lt;p&gt;OSC 3008 está diseñado para este tipo de escenario. La especificación oficial de UAPI indica que permite a los emuladores de terminal rastrear la jerarquía de contexto del contenido actual en pantalla. systemd también ofrece una implementación, normalmente mediante un script llamado &lt;code&gt;80-systemd-osc-context.sh&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Referencias oficiales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UAPI.15 OSC 3008: Hierarchical Context Signalling: &lt;a class=&#34;link&#34; href=&#34;https://uapi-group.org/specifications/specs/osc_context/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://uapi-group.org/specifications/specs/osc_context/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;systemd &lt;code&gt;80-systemd-osc-context.sh&lt;/code&gt;: &lt;a class=&#34;link&#34; href=&#34;https://github.com/systemd/systemd/blob/main/profile.d/80-systemd-osc-context.sh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/systemd/systemd/blob/main/profile.d/80-systemd-osc-context.sh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;por-qué-hace-falta-osc-3008&#34;&gt;Por qué hace falta OSC 3008
&lt;/h2&gt;&lt;p&gt;Los terminales tradicionales muestran la salida de los programas. Como mucho, ayudan a distinguir entornos mediante títulos, colores y prompts. El problema es que las sesiones modernas de terminal suelen estar anidadas:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;local shell -&amp;gt; SSH remote server -&amp;gt; Docker/Podman/systemd-nspawn container -&amp;gt; run0 elevated command
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si todo depende de &lt;code&gt;PS1&lt;/code&gt;, aparecen varios problemas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;El prompt solo describe el shell actual y no expresa bien toda la jerarquía.&lt;/li&gt;
&lt;li&gt;Distintos shells, distribuciones y configuraciones de usuario pueden sobrescribirse entre sí.&lt;/li&gt;
&lt;li&gt;El emulador de terminal no puede saber de forma fiable a qué contexto pertenece cada salida.&lt;/li&gt;
&lt;li&gt;Algunas secuencias de control aparecen como basura visible en terminales incompatibles.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;OSC 3008 ofrece un enfoque más estructurado: el programa que entra en un contexto envía una secuencia &lt;code&gt;start&lt;/code&gt;, y el programa que sale envía una secuencia &lt;code&gt;end&lt;/code&gt;. Tras analizarlas, el emulador de terminal puede saber a qué nodo de contexto pertenece la salida actual.&lt;/p&gt;
&lt;h2 id=&#34;qué-información-envía&#34;&gt;Qué información envía
&lt;/h2&gt;&lt;p&gt;OSC 3008 es un conjunto de secuencias de escape OSC. La especificación define dos comandos centrales:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OSC &amp;#34;3008;start=...&amp;#34; ST
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OSC &amp;#34;3008;end=...&amp;#34; ST
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;start&lt;/code&gt; indica que un contexto empieza, se actualiza o vuelve a ser el contexto actual. &lt;code&gt;end&lt;/code&gt; indica que un contexto termina.&lt;/p&gt;
&lt;p&gt;Cada contexto puede incluir campos de metadatos. Entre los campos comunes están:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;type=&lt;/code&gt;: tipo de contexto, como &lt;code&gt;shell&lt;/code&gt;, &lt;code&gt;command&lt;/code&gt;, &lt;code&gt;remote&lt;/code&gt;, &lt;code&gt;container&lt;/code&gt;, &lt;code&gt;vm&lt;/code&gt; o &lt;code&gt;elevate&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;user=&lt;/code&gt;: usuario UNIX que emite la secuencia.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hostname=&lt;/code&gt;: nombre del host.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;machineid=&lt;/code&gt;: ID de máquina de &lt;code&gt;/etc/machine-id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bootid=&lt;/code&gt;: ID de arranque de &lt;code&gt;/proc/sys/kernel/random/boot_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pid=&lt;/code&gt;: PID del proceso que emite la secuencia.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;comm=&lt;/code&gt;: nombre del proceso.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cwd=&lt;/code&gt;: directorio de trabajo actual, sobre todo para &lt;code&gt;shell&lt;/code&gt; o &lt;code&gt;command&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cmdline=&lt;/code&gt;: línea de comandos invocada de forma interactiva.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;container=&lt;/code&gt; y &lt;code&gt;vm=&lt;/code&gt;: nombres de contenedor o máquina virtual.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;targetuser=&lt;/code&gt; y &lt;code&gt;targethost=&lt;/code&gt;: usuario destino u host remoto destino.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Estos campos no están pensados para que el usuario los lea directamente, sino para que los analice el emulador de terminal. Un terminal compatible consume estas secuencias y las usa para mejorar la interfaz.&lt;/p&gt;
&lt;h2 id=&#34;qué-ventajas-puede-aportar&#34;&gt;Qué ventajas puede aportar
&lt;/h2&gt;&lt;p&gt;Si el emulador de terminal soporta OSC 3008, puede hacer cosas más inteligentes.&lt;/p&gt;
&lt;p&gt;Primero, puede marcar salidas de contextos distintos. Por ejemplo, salida de un contenedor, salida de un comando elevado y salida de SSH remoto pueden tener fondos, bordes o avisos diferentes.&lt;/p&gt;
&lt;p&gt;Segundo, puede mostrar una ruta jerárquica. El terminal puede saber que la sesión actual está aproximadamente en:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;local machine -&amp;gt; remote host -&amp;gt; container -&amp;gt; root command
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto es más estable que depender solo del título de la ventana o de &lt;code&gt;PS1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Tercero, puede ayudar con títulos de ventana, pestañas y menús contextuales. El terminal puede actualizar el título de la pestaña según el contexto actual, o permitir acciones como abrir un shell en el mismo directorio de una salida concreta.&lt;/p&gt;
&lt;p&gt;Cuarto, puede reducir errores. Si estás dentro de un contenedor de producción y ejecutando comandos como root, el terminal puede mostrar un aviso más visible y reducir la probabilidad de ejecutar comandos peligrosos en el entorno equivocado.&lt;/p&gt;
&lt;h2 id=&#34;cómo-lo-integra-systemd&#34;&gt;Cómo lo integra systemd
&lt;/h2&gt;&lt;p&gt;La implementación de systemd vive principalmente en &lt;code&gt;80-systemd-osc-context.sh&lt;/code&gt;. Este script se carga mediante el mecanismo de profile y configura funciones y hooks de prompt en entornos Bash interactivos.&lt;/p&gt;
&lt;p&gt;Las rutas comunes pueden ser:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/etc/profile.d/80-systemd-osc-context.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/lib/systemd/profile.d/80-systemd-osc-context.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La ubicación exacta depende de la distribución. Los comentarios del código fuente de systemd explican que este archivo puede activarse mediante &lt;code&gt;systemd-tmpfiles&lt;/code&gt;, que lo enlaza en &lt;code&gt;/etc/profile.d/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En Bash usa nombres de función como:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;__systemd_osc_context_escape
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;__systemd_osc_context_common
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;__systemd_osc_context_precmdline
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;También afecta a &lt;code&gt;PROMPT_COMMAND&lt;/code&gt; y &lt;code&gt;PS0&lt;/code&gt;. &lt;code&gt;PS0&lt;/code&gt; se expande después de que Bash lea un comando y antes de ejecutarlo. Por eso algunos terminales incompatibles pueden mostrar un texto largo &lt;code&gt;3008;start=...&lt;/code&gt; antes de cada comando.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-algunos-terminales-muestran-basura&#34;&gt;Por qué algunos terminales muestran basura
&lt;/h2&gt;&lt;p&gt;Normalmente, un emulador de terminal debería analizar OSC 3008 como secuencia de control y no mostrarlo directamente.&lt;/p&gt;
&lt;p&gt;Pero si el terminal no reconoce OSC 3008, o una capa intermedia filtra, escapa o rompe los caracteres de control, el contenido bruto puede aparecer en pantalla. Los casos comunes incluyen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Emuladores de terminal antiguos.&lt;/li&gt;
&lt;li&gt;Clientes SSH que aún no se han adaptado a OSC 3008.&lt;/li&gt;
&lt;li&gt;Bastiones web o terminales de navegador, incluidas algunas instalaciones de Apache Guacamole.&lt;/li&gt;
&lt;li&gt;Entornos con soporte OSC limitado, como Emacs &lt;code&gt;term.el&lt;/code&gt;, terminales serie o &lt;code&gt;minicom&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Reenvíos de varias capas donde una capa intermedia daña la secuencia de control.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En ese caso puedes ver algo parecido a:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;]3008;start=...;type=command;cwd=...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;O cadenas largas con &lt;code&gt;machineid=&lt;/code&gt;, &lt;code&gt;bootid=&lt;/code&gt;, &lt;code&gt;pid=&lt;/code&gt;, &lt;code&gt;comm=&lt;/code&gt; y &lt;code&gt;cwd=&lt;/code&gt;. No son salida normal de un programa; son señales de contexto que el terminal debía procesar.&lt;/p&gt;
&lt;h2 id=&#34;cómo-saber-si-es-osc-3008&#34;&gt;Cómo saber si es OSC 3008
&lt;/h2&gt;&lt;p&gt;Mira tres pistas.&lt;/p&gt;
&lt;p&gt;Primero, si la basura incluye &lt;code&gt;3008;start=&lt;/code&gt; o &lt;code&gt;3008;end=&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Segundo, si aparece antes o después de ejecutar comandos, especialmente cada vez que pulsas Enter.&lt;/p&gt;
&lt;p&gt;Tercero, si el sistema actual cargó las funciones OSC de systemd:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;declare&lt;/span&gt; -f __systemd_osc_context_precmdline
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si ves una definición de función, el shell actual cargó esa lógica.&lt;/p&gt;
&lt;p&gt;También puedes comprobar el archivo de profile:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls -l /etc/profile.d/80-systemd-osc-context.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si esa ruta existe y tu terminal no soporta OSC 3008, es muy probable que la salida basura venga de ahí.&lt;/p&gt;
&lt;h2 id=&#34;solución-temporal&#34;&gt;Solución temporal
&lt;/h2&gt;&lt;p&gt;Si solo te molesta en la sesión actual, puedes sobrescribir las funciones relacionadas y limpiar &lt;code&gt;PS0&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;__systemd_osc_context_precmdline&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; :&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;__systemd_osc_context_common&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; :&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;__systemd_osc_context_escape&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; :&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PS0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si quieres hacerlo automáticamente solo en sesiones SSH, ponlo en &lt;code&gt;~/.bashrc&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SSH_CLIENT&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SSH_TTY&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SSH_CONNECTION&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;declare&lt;/span&gt; -f __systemd_osc_context_precmdline &amp;gt;/dev/null&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        __systemd_osc_context_precmdline&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; :&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        __systemd_osc_context_common&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; :&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        __systemd_osc_context_escape&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; :&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;PS0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Este método tiene poco alcance. No cambia archivos profile del sistema y es fácil de retirar.&lt;/p&gt;
&lt;h2 id=&#34;desactivación-a-nivel-de-sistema&#34;&gt;Desactivación a nivel de sistema
&lt;/h2&gt;&lt;p&gt;Si confirmas que el entorno de terminal de esta máquina es generalmente incompatible con OSC 3008, puedes considerar desactivarlo a nivel de sistema. Ten cuidado: afecta a todos los usuarios y sesiones de inicio.&lt;/p&gt;
&lt;p&gt;La idea descrita en los comentarios del script de systemd es eliminar el enlace simbólico &lt;code&gt;/etc/profile.d/80-systemd-osc-context.sh&lt;/code&gt; y enmascarar el fragmento tmpfiles correspondiente para que no se vuelva a crear.&lt;/p&gt;
&lt;p&gt;Puedes usar un comando como este:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt; -h /etc/profile.d/80-systemd-osc-context.sh &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -v /etc/profile.d/80-systemd-osc-context.sh &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ln -s /dev/null /etc/tmpfiles.d/20-systemd-osc-context.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esto es más pesado que cambiar &lt;code&gt;~/.bashrc&lt;/code&gt;. Prueba primero la solución temporal para confirmar que el problema realmente viene de OSC 3008, y luego decide si la desactivación del sistema tiene sentido.&lt;/p&gt;
&lt;p&gt;Si solo tu cliente SSH personal es incompatible, no empieces cambiando la configuración global. Es preferible usar tu propio &lt;code&gt;~/.bashrc&lt;/code&gt; o configurar un comando de limpieza posterior al inicio de sesión en el cliente SSH.&lt;/p&gt;
&lt;h2 id=&#34;actualizar-el-terminal-o-desactivar-osc-3008&#34;&gt;Actualizar el terminal o desactivar OSC 3008
&lt;/h2&gt;&lt;p&gt;Si usas un terminal moderno que ya soporta OSC 3008, es mejor conservar esta capacidad. En el futuro puede hacer más clara la visualización de shells remotos, contenedores, máquinas virtuales y comandos elevados.&lt;/p&gt;
&lt;p&gt;Si tu entorno real es un bastión, una consola serie, un terminal antiguo o un Web SSH que no puedes actualizar pronto, suprimirlo es más práctico. Para la mayoría de tareas de operaciones, una salida limpia y legible es más importante que una visualización de contexto mejorada.&lt;/p&gt;
&lt;p&gt;Puedes seguir este orden:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Si puedes actualizar el emulador de terminal, hazlo primero.&lt;/li&gt;
&lt;li&gt;Si no puedes actualizar y solo te afecta a ti, suprime la salida en &lt;code&gt;~/.bashrc&lt;/code&gt; o en el comando posterior al inicio de sesión del cliente.&lt;/li&gt;
&lt;li&gt;Si afecta a toda la máquina, considera eliminar &lt;code&gt;/etc/profile.d/80-systemd-osc-context.sh&lt;/code&gt; y enmascarar el fragmento tmpfiles.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;conclusión-breve&#34;&gt;Conclusión breve
&lt;/h2&gt;&lt;p&gt;OSC 3008 no es malware ni salida aleatoria de un programa. Es señalización de contexto de terminal definida por UAPI.15, pensada para que el terminal entienda la jerarquía entre shells, SSH, contenedores, máquinas virtuales y comandos elevados.&lt;/p&gt;
&lt;p&gt;El problema real suele ser la compatibilidad. Un terminal compatible lo analiza automáticamente. Uno incompatible puede mostrar la secuencia de control como basura.&lt;/p&gt;
&lt;p&gt;Si ves contenido como &lt;code&gt;3008;start=&lt;/code&gt;, &lt;code&gt;machineid=&lt;/code&gt;, &lt;code&gt;bootid=&lt;/code&gt; o &lt;code&gt;cwd=&lt;/code&gt;, primero comprueba si lo inyectó &lt;code&gt;80-systemd-osc-context.sh&lt;/code&gt; de systemd. Después, según el alcance del impacto, elige una solución temporal, una corrección en tu &lt;code&gt;.bashrc&lt;/code&gt; personal o una desactivación a nivel de sistema.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
