Disclaimer: This is a personal web page. Contents written here do not represent the position of my employer.
Thursday, November 09, 2006
'beep' no es un programa
Pongámonos en antecedentes: últimamente estoy usando ciertos scripts para compilar programas, que en concreto se encargan de lanzar las invocaciones de las autotools necesarias para cada proceso de compilación (autogen, make, make clean, sudo make install, etc.), algo que en particular me parece un poco engorroso y precario, pero ese tema lo dejaremos para otra entrada.
El caso es que algunos de estos comandos se ejecutan con privilegios de administrador, por tanto les precede un comando "sudo". Este comando para poder ejecutarse con éxito pide por la entrada estándar la introducción de una contraseña, con el inconveniente de que si tardas mucho en introducirla, salta un time-out y el comando se cancela. Claro, entonces lo que me ocurre es que cuando quiero compilar un programa grande, invoco el script y lo dejo ejecutándose en una consola y, mientras, me voy a usar otras ventanas para hacer otras cosas, pero cuando vuelvo a la consola para introducir la contraseña, el comando ha expirado y tengo que volver a lanzar el script, procurando la próxima vez estar más atento.
Entonces aquí es cuando se dice lo de "¡beep al rescate!". Si escribimos en una consola la palabra 'beep', nuestro ordenador pita, y eso es lo que necesitaba poner justo antes de los comandos de sudo en mi script. Sin embargo, ¿qué ocurrió?:
No pasa nada, una simple búsqueda en google y encontré la respuesta: beep no es un comando, sino un alias de la expresión 'echo -en "\007"', por tanto dentro de un script no podemos usarlo. La solución es usar la expresión entera, hasta que alguien empaquete en el bin de las distribuciones un programita muy simple que invoque esta llamada.
El caso es que algunos de estos comandos se ejecutan con privilegios de administrador, por tanto les precede un comando "sudo". Este comando para poder ejecutarse con éxito pide por la entrada estándar la introducción de una contraseña, con el inconveniente de que si tardas mucho en introducirla, salta un time-out y el comando se cancela. Claro, entonces lo que me ocurre es que cuando quiero compilar un programa grande, invoco el script y lo dejo ejecutándose en una consola y, mientras, me voy a usar otras ventanas para hacer otras cosas, pero cuando vuelvo a la consola para introducir la contraseña, el comando ha expirado y tengo que volver a lanzar el script, procurando la próxima vez estar más atento.
Entonces aquí es cuando se dice lo de "¡beep al rescate!". Si escribimos en una consola la palabra 'beep', nuestro ordenador pita, y eso es lo que necesitaba poner justo antes de los comandos de sudo en mi script. Sin embargo, ¿qué ocurrió?:
./runsvn: line 15: beep: command not found
No pasa nada, una simple búsqueda en google y encontré la respuesta: beep no es un comando, sino un alias de la expresión 'echo -en "\007"', por tanto dentro de un script no podemos usarlo. La solución es usar la expresión entera, hasta que alguien empaquete en el bin de las distribuciones un programita muy simple que invoque esta llamada.
Labels: General, Programacion