Puedo ubicar los ejecutables llamados git
de varias maneras (básicamente equivalente a which git
). Pero todas las soluciones que conozco están vencidas por el programa falso /usr/bin/git
de OS X, que es un enlace a un cuadro de diálogo que ofrece la instalación de git
de Xcode (me referiré más adelante como el instalador OS X git .)
Quiero detectar esa situación y tratar a git
como no encontrado si es el único. No quiero tener que ejecutarlo para determinar eso, porque no quiero activar el cuadro de diálogo del instalador.
Contexto: me gustaría implementar lo siguiente (como parte de un proceso de instalación de software más amplio):
- Determine si un git "real" está instalado (es decir, un ejecutable llamado
git
, que no sea el instalador de OS X git, se encuentra en elPATH
), - Si lo es, reconozca y respételo y proceda (tengo esta parte resuelta),
- Si no lo está, instale el del proyecto git (tengo esta parte resuelta).
Me siento cómodo analizando PATH
si es necesario y buscando ejecutables, si puedo encontrar una manera de ignorar el instalador OS X git. Me siento cómodo con una heurística si esto es correcto casi todo el tiempo; No necesito manejar casos de borde (como alguien que crea un ejecutable o un script llamado git
que no es compatible con git
).
¿Cuál es la mejor manera (más robusta, secundaria y conveniente) de determinar si un instalador de git que no es OS X git
está instalado en un sistema sin ejecutando /usr/bin/git
(y activando el instalador diálogo)?