0 votos

Terminal: comando anulado mediante shell script en /usr/local/bin no se ejecuta a menos que se llame directamente

He creado un shell script que envuelve a ssh para cambiar el fondo de mi terminal cuando me conecto a un servidor siguiendo uno de los muchos ejemplos de este sitio y de stackexchange.

11:22 ~  $ echo $PATH
/opt/local/bin:/opt/local/sbin:/Volumes/Macintosh HD/Users/robertson/bin/android-sdk-macosx/platforms:/Volumes/Macintosh HD/Users/robertson/bin/android-sdk-macosx/tools:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin
11:22 ~  $ which ssh
/usr/local/bin/ssh
11:22 ~  $ whereis ssh
/usr/bin/ssh

Como puedes ver, que ssh sí encuentra correctamente el script que coloqué en /usr/local/bin, sin embargo whereis ssh no lo hace, y cuando ejecuto ssh user@example.com , todavía me sale el sistema ssh sin ejecutar mi wrapper. Me veo obligado a llamarlo directamente a través de /usr/local/bin/ssh user@example.com para conseguir el cambio de color.

¿Alguna idea de lo que falta aquí?

1voto

hillu Puntos 4033

El orden de ejecución se basa en el orden de la PATH - las ubicaciones puestas en primer lugar se buscan primero, si se encuentra una coincidencia se ejecuta, SIN EMBARGO, los mapeos de los programas se almacenan en la caché, por lo que es necesario refrescar la caché antes de que los cambios tengan lugar (si ha utilizado esa aplicación antes). Ver http://www.thegeekstuff.com/2010/08/bash-shell-builtin-commands/ (punto 3.):

hash mantiene una tabla hash, que tiene los nombres de las rutas de los comandos utilizados nombres. Cuando se ejecuta un comando, se busca un comando en la variable $PATH. Pero si el comando está disponible en la tabla hash, lo lo toma de allí y lo ejecuta. La tabla hash mantiene el número de aciertos encontrados para cada comando utilizado hasta ahora en ese shell.

y

Puedes eliminar un comando particular de una tabla hash usando la opción -d y la opción -r para restablecer la tabla hash completa.

Nota al margen: ¿quizás intentar crear un alias en lugar de un wrapper?

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X