29 votos

¿Qué hace update_terminal_cwd en la terminal de OS X?

Estoy desconcertado desde hace tiempo. En $PROMPT_COMMAND del bash en OS X, hay un comando llamado update_terminal_cwd . Estoy seguro de que no es un bash built in, y lo más probable es que sólo existe en OS X. Pero no sé lo que hace exactamente. ¿Alguien lo sabe?

33voto

KTamas Puntos 291

Actualiza el prompt para hacer eco del Directorio de Trabajo Actual (CWD) y se define en /etc/bashrc :

update_terminal_cwd() {
    # Identify the directory using a "file:" scheme URL,
    # including the host name to disambiguate local vs.
    # remote connections. Percent-escape spaces.
    local SEARCH=' '
    local REPLACE='%20'
    local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
    printf '\e]7;%s\a' "$PWD_URL"
}

3 votos

Cabe destacar que la función sólo se define si se ejecuta el shell en la aplicación Terminal de Apple. Si estás usando iTerm, no estará definida.

0 votos

¿Para qué sirve el escape-7 y dónde se imprime? ¿Dónde está documentado? :)

2 votos

@Wildcard Es un xterm para establecer el texto de la barra de título. La documentación más accesible es quizás la de Linux Cómo se hace en Bash Prompt . Hay documentación real en el xterm fuentes, según creo.

-15voto

John Chadwick Puntos 312

Cadena de formato codificado secreto opaco, ' \e ]7;%s \a '. Sospechoso.

local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"

Por lo que deduzco, "file://$HOSTNAME" está enmascarado para que no se pueda ver protocolo remoto:espionaje de host.

1 votos

...o $HOSTNAME es una variable que cambia dependiendo del sistema en el que se ejecuta el script. ?!? ¿Muy paranoico? Si crees que el código listado en la otra respuesta puede hacer algo más que imprimir en la pantalla, no tienes ni idea de cómo funciona el scripting de bash.

0 votos

¿No recibiste el memo? - "ShellShock" vulnerabilidad de bash web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271 En cualquier caso 1) Origen desconocido en cuanto a que no establecí esa variable de entorno 'update_terminal_cwd' 2) Encima es una función. Automáticamente es sospechoso. Infiltración masiva. Nadie quiere eso. ¿Quizás el NIST informe de las "vulnerabilidades" de Apple OSX y del navegador Firefox/Chrome/Opera?

7 votos

Sigues demostrando que no tienes ni idea de lo que hablas. update_terminal_cwd no es una variable de entorno, es el nombre de una función. Se define en texto claro en /etc/bashrc y el printf no tiene la capacidad de hacer nada excepto imprimir cadenas formateadas en la pantalla. Por último, el enlace de la vulnerabilidad que has publicado implica la ejecución de funciones arbitrarias añadiendo 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 el shell scripting?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X