El comando se supone que mueve el proceso tmux desde un contexto de arranque recién creado bajo el Root, al contexto de arranque de inicio de sesión del usuario.
Para explicarlo en términos un poco más comunes:
MacOS (antes OS X) está construido con un Mach-kernel en la capa más baja. Los programas que se ejecutan en esta capa se denominan tareas.
Encima del Mach-kernel está el subsistema BSD. Los programas que se ejecutan en esta capa se llaman procesos. Las aplicaciones que ejecutas y conoces en OS X (como por ejemplo tmux o Terminal.app) utilizan el subsistema BSD, por lo que al ejecutarse se convierten en procesos.
Cuando un programa en ejecución (un proceso o tarea) necesita comunicarse con otro proceso/tarea a través de un puerto Mach, pasará por la llamada tarea bootstrap. Esta tarea de muy bajo nivel es responsable de buscar las solicitudes del puerto Mach, y esencialmente dirigir la información al lugar correcto.
MacOS / OS X es esencialmente un sistema multiusuario. Varios usuarios pueden estar conectados al mismo tiempo, y cada uno puede estar ejecutando varios procesos. Por lo general, no se les permite interactuar entre sí, excepto cuando se permite explícitamente.
Además de los procesos de usuario, el sistema ejecutará en el arranque (y a veces más tarde) programas en segundo plano llamados daemons. No están asociados a un inicio de sesión de usuario específico, y siguen ejecutándose cuando los usuarios cierran la sesión.
La tarea de arranque de Mach mencionada anteriormente agrupa todas las tareas en el "contexto de inicio" para los programas daemon, o en el "contexto de inicio de sesión del usuario". Hay uno de estos últimos para cada usuario actualmente conectado.
En esencia, cuando los programas buscan los puertos de Mach para comunicarse, sólo pueden ver los puertos en su contexto actual. Cuando se inicia un programa normal, se inicia en el contexto de inicio de sesión de su usuario - y por lo tanto puede comunicarse con otros programas que ha iniciado.
Sin embargo, el proceso tmux utiliza la llamada a la función daemon() para "daemonizarse", es decir, seguir funcionando en segundo plano. Esto también tiene el efecto de mover el proceso tmux del contexto de inicio de sesión del usuario al contexto de inicio.
Ahora programas como "open" ya no funcionarán, porque funcionan buscando el puerto Mach de WindowServer para el usuario actualmente conectado, y le envía comandos para hacer su trabajo. La búsqueda fallará, ya que tmux está ahora en el contexto de arranque equivocado.
El programa reattach-to-user-namespace soluciona este problema utilizando una forma no oficial de interactuar con el proceso launchd (responsable de la gestión de los procesos daemon) - para conseguir que launchd le diga qué contexto es el contexto de inicio de sesión del usuario.
Luego utiliza la llamada al sistema de Mach task_set_bootstrap_port() para que otras miradas al puerto desde los procesos tmux (y sus procesos hijos) lleguen a la tarea bootstrap del contexto de inicio de sesión del usuario.
En cuanto a por qué no le funciona: ¿Te has acordado de matar y reiniciar tu servidor tmux después de la instalación? (hágalo ejecutando "tmux kill-server")
También podrías intentar ejecutar el comando reattach-to-user-namespace manualmente desde Terminal.app para ver si realmente lo tienes instalado y se ejecuta correctamente.