Bash no encuentra un programa aunque esté en mi camino

26

Tengo un programa en mi camino. El programa se ejecuta cuando se ejecuta con una ruta completa especificada. Pero el programa no se puede encontrar cuando lo ejecuto solo con su nombre.

Esencialmente, quiero entender cómo es posible el resultado a continuación y cómo solucionarlo para que mi programa se pueda encontrar sin una ruta completa especificada:

root:/usr/local/bin# ./siege
****************************************************
siege: could not open /usr/local/bin/etc/siegerc
run 'siege.config' to generate a new .siegerc file
****************************************************
root:/usr/local/bin# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root:/usr/local/bin# siege
bash: /usr/bin/siege: No such file or directory
root:/usr/local/bin# wtf!?!?

Estoy en Ubuntu 12.04 usando bash. También tenga en cuenta que la salida de advertencia del sitio no es relevante para los propósitos de esta pregunta, ya que solo estoy interesado en saber si el programa se puede encontrar o no.

Jonás
fuente

Respuestas:

38

Tenga en cuenta la salida aquí:

root:/usr/local/bin# siege
bash: /usr/bin/siege: No such file or directory

Bash mantiene un hash interno de ejecutables encontrados previamente en su ruta. En este caso, tiene detalles de que hubo un archivo ejecutable en / usr / bin / siege, y reutiliza esa ruta para evitar tener que buscar nuevamente. Debe decirle a bash que vuelva a escribir manualmente el camino para el asedio de esta manera:

hash siege

También puede borrar todas las ubicaciones hash:

hash -r
Chris Down
fuente
0

Otra causa de este problema podría ser que la ruta al ejecutable en sí está en la ruta, en lugar del directorio que contiene el ejecutable .

Entonces, en lugar de poner

/home/myDir/theExecutable

en el camino, simplemente agregue esto

/home/myDir
Matthias Braun
fuente