[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Pregunta tonta de Bash



Ismael Valladolid Torres wrote:
> Esto te sirve tanto en otros sistemas UNIX (como HP-UX) donde which
> tiene la gracia de devolver el estado "al revés" (0 si existe, 1 si no
> existe). También te sirve en sistemas donde el comando estaría en el
> path pero tu usuario no tendría permisos para ejecutarlo.

Es bueno saber eso, no tenía idea, muchas gracias por esa información.
Precisamente estos días tengo la desventura de estar desarrollando
software para HP-UX.  Experimentando con esto, veo que el problema es
más bien que which no reporta como un error el caso en que no encuentra
el comando en la ruta:

$ uname -svr
HP-UX B.11.11 U
$ which ls >/dev/null; echo $?
0
$ which inexistente >/dev/null; echo $?
0

Peor aún, cuando no encuentra el comando, imprime una letanía ...

$ which inexistente
no inexistente in /usr/bin /usr/ccs/bin /usr/contrib/bin /opt/mx/bin
/opt/hparray/bin /opt/nettladm/bin /opt/upgrade/bin /opt/fcms/bin
[etc, etc]

... pero lo hace ¡en la salida *estándar*, no en la de error!  Luego, no
puedes comprobar si which falló asumiendo que devuelve una cadena vacía.
Tienes que usar test -x, como bien sugieres.

Estúpido sistema operativo.  Y pensar que te lo venden.
Y mejor no empiezo con su compilador senil, y la fiesta que es instalar
un GCC reciente, y su getaddrinfo() torcido, y...

En fin.  Nomás por completez:

$ uname -svr
AIX 3 5
$ which ls >/dev/null; echo $?
0
$ which inexistente >/dev/null; echo $?
1

Cual debería ser.  No tengo un Solaris a la mano, pero realmente no
espero ninguna desviación de GNU y AIX.  Es HP-UX el que es... especial.

> Y no existen las preguntas tontas, existen las respuestas que se pasan
> de listas.

Ups.  Acuso recibo de pedrada en parietal izquierdo.  Ya me callo :)

-- 
César Rincón
Enlaces Tecnológicos
Guadalajara, México



Reply to: