diff --git a/episodes/DEPURA_qu-hace-en-una-frase_S20260726.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md b/episodes/DEPURA_qu-hace-en-una-frase_S20260726.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md new file mode 100644 index 00000000..d4affec3 --- /dev/null +++ b/episodes/DEPURA_qu-hace-en-una-frase_S20260726.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD.md @@ -0,0 +1,44 @@ +--- +episode_id: "aadf8149-186c-4e23-b594-4f4c6d0218d2" +puente_flat: "DEPURA_qu-hace-en-una-frase_S20260726.R2_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD" +session_code: "S20260726.ARCO_CICLO4_AUTOMEJORA" +acto_dialogico: "informar" +actor_flujo: "multi_actor" +criticidad_aegis: "low" +skill_dominante: "NONE" +fase_proyecto: "operations" +tipo_semantico: "troubleshooting" +summary_one_line: "EPISODIO 2 — MNEMO_PRE_DIGEST: Qué hace, en una frase" +source_type: "claude_code" +trust_boundary: "internal" +created_at: "2026-07-26T19:25:41.676708+00:00" +relectura_tagged: false +forgejo_commit_sha: "pending" +--- + +Analicé el comando y lo medí en un bash aislado. **Funciona, pero tiene un bug silencioso que importa en un servidor** — y no es de colores. + +## Qué hace, en una frase + +Añade al final de `~/.bashrc` (el archivo que bash lee cada vez que abres una terminal) una línea que redefine `PS1` — la variable que dibuja el texto del prompt — y luego recarga ese archivo para verlo sin cerrar sesión. + +## Lo que está bien hecho + +Tres cosas correctas, y no son obvias: + +- **Los `\[ ... \]` alrededor de cada código de color.** Los códigos de color son caracteres invisibles. Bash necesita saber que no ocupan espacio en pantalla; para eso se envuelven en `\[ \]`. Sin ellos, bash cuenta mal el ancho de la línea y el cursor se descuadra al navegar el historial o al escribir comandos largos (el módulo que gestiona la edición de línea, *readline*, pierde la cuenta). Aquí están todos bien puestos. +- **`>>` y no `>`.** Añade al final en vez de vaciar el archivo. Con `>` habrías borrado tu `.bashrc` completo. +- **Comillas simples externas.** La línea se escribe literal en el archivo, sin que el shell actual expanda nada al escribirla. + +## Los hallazgos (medidos, no supuestos) + +Expandí tu `PS1` con `${PS1@P}` —la expansión de prompt que hace bash internamente— y comparé contra la misma cadena en comillas simples. La diferencia es real: + +| # | Hallazgo | Severidad | +|---|---|---| +| H1 | **Se pierde el indicador de root** | 🔴 alta | +| H2 | El directorio sale en rojo por herencia + código de color duplicado | 🟡 media | +| H3 | No es idempotente: cada corrida añade otra línea `PS1=` | 🟡 media | +| H4 | Si el `.bashrc` no termina en salto de línea, `>>` corrompe la última línea existente | 🟠 media-alta | +| H5 | El emoji ⚡ es el eslabón frágil (codificación + ancho de columna) | 🟡 media | +| H6 | Sin backup previo ni verificación posterior | 🟡 media |