En bash, para detectar si un comando COMMAND está disponible, se debe ejecutar la siguiente declaración. (Tenga en cuenta que configuré bash como la shell predeterminada, en lugar de zsh.)
type COMMAND...
Por ejemplo, type
detecta que el comando cp
está disponible y que el comando foo
no está disponible.
$ type cp
cp is /bin/cp
$ type foo
-bash: type: foo: not found
Es importante mencionar que se pueden pasar dos o más comandos a type
.
$ type cp foo
cp is /bin/cp
-bash: type: foo: not found
Sin embargo, type
es inútil para detectar la verdadera disponibilidad de los comandos SetFile
y GetFileInfo
, es decir, para detectar si SetFile
y GetFileInfo
son realmente utilizables.
SetFile
y GetFileInfo
pertenecen a las Herramientas de Desarrollador de Línea de Comandos para Xcode. macOS 12 Monterey no incluye automáticamente Xcode ni las Herramientas de Desarrollador de Línea de Comandos. Por lo tanto, se supone que SetFile
y GetFileInfo
no están disponibles si no se instala ni Xcode ni las Herramientas de Desarrollador de Línea de Comandos. Sin embargo, type
afirmó que estaban disponibles.
$ type SetFile GetFileInfo
SetFile is /usr/bin/SetFile
GetFileInfo is /usr/bin/GetFileInfo
Luego, ejecuté SetFile
y GetFileInfo
en Terminal. Sin embargo, macOS indicó que SetFile
y GetFileInfo
no eran utilizables.
El comando "SetFile" requiere las herramientas de desarrollador de línea de comandos. ¿Le gustaría instalar las herramientas ahora?
El comando "GetFileInfo" requiere las herramientas de desarrollador de línea de comandos. ¿Le gustaría instalar las herramientas ahora?
Estos mensajes de error no se mostraron en Terminal; en su lugar, apareció una ventana de diálogo GUI en el escritorio fuera de Terminal, pidiendo al usuario que haga clic en el botón "Instalar" o "Cancelar".
¿Cómo se puede probar la verdadera disponibilidad de SetFile
y GetFileInfo
de forma silenciosa sin causar interacción del usuario?
Permítame hacer algunas preguntas más relacionadas con la pregunta anterior. En una ocasión, hice clic en el botón "Instalar" para permitir que se instalaran las Herramientas de Desarrollador de Línea de Comandos (CLDT). Pensé que las Herramientas de Desarrollador de Línea de Comandos (CLDT) se instalarían en "/Applications/Xcode.app". Sin embargo, la instalación de CLDT no creó el directorio "/Applications/Xcode.app" ni lo instaló en él. ¿Dónde se instaló CLDT?
¿Ha cambiado el archivo binario "/usr/bin/SetFile" antes y después de la instalación de CLDT?
Supuse que "/usr/bin/SetFile" dependía de una biblioteca o framework de CLDT. Si este es el caso, ¿dónde se encuentra la biblioteca o framework de CLDT?
0 votos
Usar
type
, owhich
, owhence
indica correctamente que hay un comando llamadoSetFile
. Quieres que el sistema operativo te diga si es el que buscas, una definición diferente de "correcto". Eso no es algo que el sistema operativo pueda saber.0 votos
Tampoco en ninguna parte dice que los binarios llamados
SetFile
y/oGetFile
no deberían estar disponibles solo porque no está instalada la CLT. Al igual que otras partes del sistema, se proporcionan shims para instalar herramientas que falten/sean deseadas.