Cambia el perfil iTerm2 dependiendo del directory actual

Usando my .bash_profile, solía cambiar mi perfil iTerm2 por máquina con el siguiente command:

echo -e "\033]50;SetProfile=ssh\a" 

Ahora, quiero cambiarlo según mi directory de trabajo actual.

Idealmente debe funcionar algo como esto:

  • Una vez que ingreso / mnt / producción o cualquier subcarpeta dentro, iTerm debe cambiar al perfil de producción.
  • Una vez que abandone ese directory, debería cambiar al perfil de bash.

¿Hay alguna forma de hacer eso?

  • La carga promedio aumenta después de actualizar a Mavericks
  • OSX El Capitan restablece el número de espacios
  • Suspendido (salida tty) cuando se lanzan editores como vim, vi, emacs o nano
  • La aplicación Java no forzará la salida, previene el cierre
  • ¿Cómo hacer que una línea de command ejecutable sea una aplicación?
  • ¿Es posible restablecer PATH?
  • ¿Cómo acceder a la contraseña de Wi-Fi a través de Terminal?
  • Terminal "LoadModule" - command no encontrado
  • One Solution collect form web for “Cambia el perfil iTerm2 dependiendo del directory actual”

    Finalmente encontré una solución usando bash-preexec .

    Esa utilidad tiene la siguiente function:

    precmd Ejecutado justo antes de cada aviso. Equivale a PROMPT_COMMAND, pero es más flexible y resistente.

    Para instalar bash-preexec:

     brew install bash-preexec 

    Entonces tengo que agregar lo siguiente a mi .bash_profile:

     if [ -f $(brew --prefix)/etc/profile.d/bash-preexec.sh ]; then . $(brew --prefix)/etc/profile.d/bash-preexec.sh precmd() { if [[ $PWD == /mi/prod/path/produccion* ]]; then if [ -z $shouldChangeProfile ]; then echo -e "\033]50;SetProfile=production\a" fi shouldChangeProfile=1 elif [ "$shouldChangeProfile" == "1" ]; then echo -e "\033]50;SetProfile=bash\a" unset shouldChangeProfile fi } fi 

    Dentro de la function precmd es donde cambio el perfil de acuerdo a mis necesidades.

    shouldChangeProfile evita cambios de perfil innecesarios.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).