Simplemente quiero ejecutar un ejecutable desde la línea de comando ./arm-mingw32ce-g++
, pero luego aparece el mensaje de error,
bash: ./arm-mingw32ce-g++: No such file or directory
Estoy ejecutando Ubuntu Linux 10.10. ls -l
liza
-rwxr-xr-x 1 root root 433308 2010-10-16 21:32 arm-mingw32ce-g++
El uso de sudo ( sudo ./arm-mingw32ce-g++
) da
sudo: unable to execute ./arm-mingw32ce-g++: No such file or directory
No tengo idea de por qué el sistema operativo ni siquiera puede ver el archivo cuando está allí. ¿Alguna idea?
fuente
not a dynamic executable
(antes de instalar ia32-libs).ia32-libs-*
está en desuso en Ubuntu 16.04, instalelib32ncurses5
y en sulib32z1
lugar.Me enfrenté a este error cuando intentaba compilar la fuente de Selenium en Ubuntu. El script de shell simple con shebang correcto no se pudo ejecutar incluso después de haber cubierto todos los requisitos previos.
file file-name # helped me in understanding that CRLF ending were present in the file.
Abrí el archivo en Vim y pude ver que solo porque una vez edité este archivo en una máquina con Windows, estaba en formato DOS. Convertí el archivo a formato Unix con el siguiente comando:
dos2unix filename # actually helped me and things were fine.
Espero que tengamos cuidado cada vez que editamos archivos en plataformas, también debemos cuidar los formatos de archivo.
fuente
Este error también puede ocurrir si intenta ejecutar una secuencia de comandos y el shebang está mal escrito. Asegúrese de que lea
#!/bin/sh
,#!/bin/bash
o el intérprete que esté utilizando.fuente
./my/full/path/myscript
lugar de./myscript
.Tuve el mismo mensaje de error al intentar ejecutar un script de Python; este no era el caso de uso previsto de @ Warpspace (ver otros comentarios), pero este fue uno de los principales resultados de mi búsqueda, por lo que tal vez alguien lo encuentre útil.
En mi caso, fueron las terminaciones de línea de DOS (en
\r\n
lugar de\n
) con las que tropezaría la línea shebang (#!/usr/bin/env python
). Un simple lodos2unix myfile.py
arregló.fuente
Recibí el mismo error para un script bash simple que no tendría problemas de 32/64 bits. Esto posiblemente se deba a que el script que está intentando ejecutar tiene un error. Esta publicación del foro de ubuntu indica que con archivos de script normales puede agregar 'sh' al frente y es posible que obtenga algunos resultados de depuración. p.ej
y vea si obtiene algún resultado.
En mi caso, el problema real era que el archivo que intentaba ejecutar estaba en formato Windows en lugar de Linux.
fuente
Recibí este error
“No such file or directory”
pero existe porque mi archivo fue creado en Windows e intenté ejecutarlo en Ubuntu y el archivo contenía 15 \ r inválidos donde alguna vez había una nueva línea allí. Acabo de crear un archivo nuevo que trunca las cosas no deseadas.sleep: invalid time interval ‘15\r’ Try 'sleep --help' for more information. script.sh: 5: script.sh: /opt/ag/cont: not found script.sh: 6: script.sh: /opt/ag/cont: not found root@Ubuntu14:/home/abc12/Desktop# vi script.sh root@Ubuntu14:/home/abc12/Desktop# od -c script.sh 0000000 # ! / u s r / b i n / e n v b 0000020 a s h \r \n w g e t h t t p : / 0000400 : 4 1 2 0 / \r \n 0000410 root@Ubuntu14:/home/abc12/Desktop# tr -d \\015 < script.sh > script.sh.fixed root@Ubuntu14:/home/abc12/Desktop# od -c script.sh.fixed 0000000 # ! / u s r / b i n / e n v b 0000020 a s h \n w g e t h t t p : / / 0000400 / \n 0000402 root@Ubuntu14:/home/abc12/Desktop# sh -x script.sh.fixed
fuente
El siguiente comando funcionó en Ubuntu 16.4
Este problema surge cuando su archivo .sh está dañado o no está formateado según los protocolos de Unix.
¡dos2unix convierte el archivo .sh a formato Unix!
fuente
Tuve el mismo problema con un archivo que creé en mi mac. Si trato de ejecutarlo en un shell con ./filename, obtengo el mensaje de error de archivo no encontrado. Creo que algo andaba mal con el archivo.
qué he hecho:
abrir una sesión ssh en el servidor
cat nombre de archivo
copie la salida en el portapapeles
rm nombre de archivo
toque nombre de archivo
vi nombre de archivo
i para el modo de inserción
pegue el contenido del portapapeles
ESC para finalizar el modo de inserción
: wq!
Esto funcionó para mí.
fuente
Acabo de tener este problema en
mingw32 bash
. Había ejecutado node / npm desdeProgram Files (x86)\nodejs
y luego los moví aldisabled
directorio (esencialmente eliminándolos de la ruta). También teníaProgram Files\nodejs
(es decir, la versión de 64 bits) en la ruta, pero solo después de la versión x86. Después de reiniciar el shell bash, se pudo encontrar la versión de 64 bits de npm.node
funcionó correctamente todo el tiempo (comprobadonode -v
que cambió cuando se movió la versión x86).Creo que
bash -r
habría funcionado en lugar de reiniciar bash: https://unix.stackexchange.com/a/5610fuente
Como han mencionado otros, esto se debe a que no se puede encontrar el cargador, no su archivo ejecutable. Desafortunadamente, el mensaje no es lo suficientemente claro.
Puede solucionarlo cambiando el cargador que usa su ejecutable, vea mi respuesta completa en esta otra pregunta: Varias bibliotecas glibc en un solo host
Básicamente, debe encontrar qué cargador está tratando de usar:
Luego encuentre la ruta correcta para un cargador equivalente y cambie su ejecutable para usar el cargador de la ruta que realmente es:
Probablemente también necesitará establecer la ruta de las inclusiones, sabrá si lo desea o no después de intentar ejecutarlo. Vea todos los detalles en ese otro hilo.
fuente
Encontré mi solución para mi Ubuntu 18 aquí .
Entonces:
fuente
Tuve este problema y la razón fue EOL en algunos editores como Notepad ++. Puede comprobarlo en el menú Editar / Conversión EOL. Debe seleccionarse Unix (LF). Espero que te sea de utilidad.
fuente
Agregado aquí para referencia futura (para usuarios que podrían caer en el mismo caso): este error ocurre cuando se trabaja en Windows (que introduce caracteres adicionales debido a un separador de línea diferente al del sistema Linux) y se intenta ejecutar este script (con caracteres adicionales insertados) en Linux. El mensaje de error es engañoso.
En Windows, el separador de línea es CRLF ( \ r \ n ) mientras que en Linux es LF ( \ n ). Por lo general, esto se puede elegir en el editor de texto.
En mi caso, esto sucedió debido a trabajar en Windows y subirlo al servidor Unix para su ejecución.
fuente
scriptdir=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
entonces,cd $scriptdir || exit 1
pero\r
en mi archivo editado por Windows se agregó alscriptdir
valor. Entonces el mensaje: no such file or directory
fue más confuso, ya que terminó borrando de qué se estaba quejando.