Homebrew coloca el binario de OpenVPN en sbin, no en tu PATH
La fórmula instala el demonio de OpenVPN bajo sbin, que un PATH predeterminado de macOS no incluye. Confirma el prefijo y luego corrige la resolución en un solo archivo.
La instalación termina, brew dice que openvpn está ahí, y el shell responde command not found. El binario existe; está en un directorio del que el shell nunca supo. Homebrew enlaza los binarios de estilo demonio dentro del directorio sbin del prefijo, y un PATH predeterminado de macOS normalmente incluye el directorio bin y no el sbin. Nada está roto, y ninguna reinstalación lo cambiará.
Cuatro comprobaciones confirman el mecanismo antes de que edites cualquier archivo del shell.
Qué instala realmente la fórmula
La fórmula openvpn construye un demonio de línea de comandos, así que su ejecutable aterriza bajo sbin en lugar de bin. Después Homebrew enlaza ese binario dentro del directorio sbin del prefijo, y por eso "$(brew --prefix)/sbin/openvpn" --version funciona mientras que una invocación simple no. El directorio Cellar con versión también guarda una copia, y poner esa ruta en un archivo de inicio es la forma en que una máquina queda fijada a una compilación antigua tras una actualización.
El enlace simbólico del prefijo es la ruta estable. La ruta de Cellar es un detalle de implementación con un número de versión dentro.
Pregunta a Homebrew, no al sistema de archivos
Empieza por el gestor de paquetes, porque sabe qué instalación posee la fórmula: command -v brew, brew --prefix, brew list --versions openvpn, brew --prefix openvpn. Si el último imprime una ruta, la fórmula está presente y la cuestión es solo de resolución. Si no imprime nada, el shell busca en el lugar equivocado un paquete que nunca se instaló, y eso es otro problema con otra solución.
Dos instalaciones de Homebrew en una máquina es donde esto más importa: el brew que responde no es necesariamente el brew que instaló.
Por qué el shell no puede ver sbin
Un shell de inicio construye PATH a partir de los valores predeterminados del sistema más todo lo que añaden tus archivos de inicio. El bin de Homebrew suele añadirse y el sbin de Homebrew normalmente no, así que todos los comandos funcionan excepto los demonios. command -v openvpn que no devuelve nada mientras la ruta con prefijo devuelve una versión es todo el diagnóstico en dos comandos. Confirma que el directorio realmente contiene el enlace con ls -l "$(brew --prefix)/sbin/openvpn".
Un enlace ausente es una avería distinta de una entrada PATH ausente, y solo una de las dos se corrige editando un archivo del shell.
Corrige la ruta una vez, en un solo lugar
Para una prueba rápida en el shell actual, eval "$(brew shellenv)" establece las variables de instalación y antepone ambos directorios. Para un arreglo permanente, pon la línea de shellenv en el único archivo de inicio que tu shell lee para el modo de inicio de sesión que usas, en lugar de repartir exports por archivos de bash y zsh.
Luego abre una terminal nueva y repite la consulta de versión, porque un shell en caché sigue informando del PATH antiguo.
Mantén el descubrimiento separado del servicio
Encontrar un binario no es lo mismo que ejecutar un servicio VPN. Iniciar openvpn automáticamente añade requisitos de perfil, credenciales, privilegios y ciclo de vida que el descubrimiento de paquetes nunca tocó. Tunnelblick además incluye su propio motor, así que la versión que acabas de imprimir puede no tener nada que ver con la versión que usa la aplicación.
Anota qué ejecutable produjo la salida de versión. Esa sola línea ahorra una hora la próxima vez que dos versiones discrepen.