He escrito un script para las nuevas instalaciones de macOS que instala Homebrew, Cask y un montón de aplicaciones que me gustan, además de crear un archivo .vimrc
.
Gracias a una respuesta de daniel Azuelos (ubicada aquí: ¿La mejor forma de verificar en bash si las herramientas de línea de comandos están instaladas? ), una parte del script verifica si las herramientas de línea de comandos de Xcode están instaladas.
Cuando las herramientas de línea de comandos no están instaladas, este error se muestra al usuario:
xcode-select: error: unable to get active developer directory, use 'sudo xcode-select --switch path/to/Xcode.app' to set one (or see 'man xcode-select')
Espero que alguien pueda ayudarme a suprimir esta salida.
La función que se ejecuta para realizar la comprobación de las herramientas de la línea de comandos es:
function check_clt() {
if type xcode-select >&- && xpath=$( xcode-select --print-path ) && test -d "${xpath}" && test -x "${xpath}" ; then
echo ""
echo "The required Xcode command-line-tools are already installed! Moving on!"
sleep 3
else
instructions
sleep 45
xcode-select --install
fi
}
Creo que puedo usar 2 > /dev/null
para suprimir el error, pero no estoy seguro de la función a dónde debería ir. Lo puse antes de cada &&
en la sentencia if, pero el mensaje de error aún aparecía.
Usando la sugerencia de Nimesh, he editado la función:
function check_clt() {
if type xcode-select 2>/dev/null >&- && xpath=$( xcode-select --print-path ) 2>/dev/null && test -d "${xpath}" 2>/dev/null && test -x "${xpath}" 2>/dev/null ; then
echo ""
echo "The required Xcode command-line-tools are already installed! Moving on!"
sleep 3
else
instructions 2>/dev/null
sleep 45
xcode-select --install
fi
}
La ejecución del script todavía produce el error al usuario:
Last login: Tue Sep 4 20:40:13 on ttys000
vimusrs-Mac:~ vimusr$ cd Desktop/
vimusrs-Mac:Desktop vimusr$ chmod +x mai.sh
vimusrs-Mac:Desktop vimusr$ ./mai.sh
xcode-select: error: unable to get active developer directory, use 'sudo xcode-select --switch path/to/Xcode.app' to set one (or see 'man xcode-select')