Estoy desconcertado por esto desde hace bastante tiempo. En $PROMPT_COMMAND
el bash de OS X, hay un comando llamado update_terminal_cwd
. Estoy seguro de que no es un bash integrado, y lo más probable es que solo exista en OS X. Pero no sé qué hace exactamente. ¿Alguien sabe?
21
xterm
código de control para establecer el texto de la barra de título. La documentación más accesible es, tal vez, el Linux Bash Prompt Howto . Hay documentación real en lasxterm
fuentes, IIRC./etc/bashrc_Apple_Terminal
(se encuentra a través de un truco aprendido aquí ). Pero encuentro que dentro de una sesión de pantalla, $ PROMPT_COMMAND se convierte en una cadena vacía, lo que significa que/etc/bashrc_Apple_Terminal
probablemente ya no se ejecute. ¿Sabes por qué?/etc/bashrc
, utiliza la variable$TERM_PROGRAM
para determinar el terminal y ejecutar un correspondiente/etc/bashrc_$TERM_PROGRAM
si existe. Entonces, en la sesión de pantalla,$TERM_PROGRAM
probablemente no esté configurado, o esté configurado en algo diferenteApple_Terminal
.Cadena de formato codificado secreto opaco, '\ e] 7;% s \ a'. Sospechar.
Por lo que deduzco, "file: // $ HOSTNAME" está enmascarado para que no pueda ver el protocolo remoto: espionaje de host.
fuente
update_terminal_cwd
no es una variable de entorno, es el nombre de una función. Está definido en texto claro/etc/bashrc
y laprintf
función no tiene la capacidad de hacer nada excepto imprimir cadenas formateadas en la pantalla. Finalmente, el enlace vuln que publicó implica ejecutar funciones arbitrarias al agregar texto a una definición de variable de entorno ... que no tiene nada que ver con nada de lo que se está discutiendo aquí. ¿Y qué tienen que ver los navegadores con los scripts de shell?typeset -f
, mostrará todas las funciones "definidas por el usuario" y así surgió. Si intentaran hacer algo incompleto, no lo harían fácilmente visible.