sh: 0: getcwd () falló: no existe tal archivo o directorio

11

Estoy tratando de compilar el código ARM en Ubuntu 12.04.

Todo funciona bien cuando pongo mi código en el directorio local. Pero cuando pongo el código en el directorio de montaje citado, ocurre este error:

sh: 0: getcwd() failed: No such file or directory
sh: 0: getcwd() failed: No such file or directory

Aquí está mi comando de montaje:

sudo mount -t cifs -o username=wx,passwd=wx,auto,nounix,noserverino,file_mode=0777,dir_mode=0777,uid=user,gid=users,noperm,rw,uid=1002,gid=1002 //192.165.54.18/prj_9330  /home/dongjw/work_dir/work_9330

Estoy usando Ubuntu 12.04 64bit

¿Qué causaría este error?

dongjiawei
fuente
1
Su directorio de trabajo ya no existe. Escriba cd [PATH]su shell para ir a uno existente.
David Foerster
ver también aquí: stackoverflow.com/a/21593371/7111561
derHugo

Respuestas:

7

Recibí este error usando jshint a través de un subproceso de python en Ubuntu 12.10 de 64 bits.

node.js:464
var cwd = process.cwd();
                  ^
Error: ENOENT, no such file or directory
    at Function.resolveArgv0 (node.js:464:23)
    at startup (node.js:51:13)
    at node.js:555:3

Se debe a que eliminó o movió un directorio de debajo y no se puede determinar el directorio actual.

Cómo saber si tiene este problema:

Ejecute el comando cd . (si obtiene este error, entonces tiene este problema).

el@apollo:~/foo$ cd .
cd: error retrieving current directory: getcwd: cannot access parent 
directories: No such file or director

Intentó cambiar el directorio a su directorio actual y no pudo.

Cómo reproducir el error:

jshint se ve afectado por este error. Crea un directorio foo, cd en él, crea un archivo llamadomyjavascript.js

cd /home/el
mkdir foo
cd foo
touch myjavascript.js
jshint myjavascript.js

jshint se ejecuta correctamente, dice que no hay errores, lo cual es correcto.

Abra una segunda terminal y rm -rfel directorio /home/el/foosalga por debajo.

rm -rf /home/el/foo

Ejecute jshint myjavascript.jsnuevamente desde su primer terminal y obtendrá un error:

el@apollo:~/foo$ jshint myjavascript.js 

    node.js:464
        var cwd = process.cwd();
                      ^
    Error: ENOENT, no such file or directory
        at Function.resolveArgv0 (node.js:464:23)
        at startup (node.js:51:13)
        at node.js:555:3

¡El directorio se ha ido! E incluso si tuviera que reemplazarlo con el mismo contenido, tiene una firma diferente y el terminal no se puede recuperar, el método getcwdno puede saber cuál es el directorio actual.

Tres soluciones:

El terminal está confundido acerca de cuál es el directorio actual porque ha desaparecido o su firma ha cambiado. Realice uno de estos para solucionarlo:

  1. Ejecute el comando cd ..hasta que deje de recibir errores. Esto vuelve a sincronizar el terminal con el sistema de archivos. Luego cd de nuevo en su directorio. Inténtalo de nuevo. El error desaparece.

  2. Use su youruseren la terminal, ingrese la contraseña. Se actualiza y vuelve al mismo directorio.

  3. Cierre y vuelva a abrir el terminal que elimina las firmas del directorio obsoleto. O envíe un correo desagradable a cualquier programa (jshint) o a los miles de otros programas que no pueden tolerar o recuperarse de firmas de directorio obsoletas.

Eric Leschinski
fuente
en lugar de ejecutar cd .."con la suficiente frecuencia", también podría cd ~directamente a su carpeta de inicio
derHugo
4

Me sale el mismo error, pero estaba tratando de ejecutar un script en mi directorio de inicio. Lo resolví con:

pushd ~ 1>/dev/null; pwd ; popd 1>/dev/null

Esto mueve mi a mi directorio de inicio, luego ejecuta pwd (pero puedes ejecutar lo que quieras) y luego el popd me mueve de regreso a donde estaba. Si no necesitas moverte hacia atrás entonces

cd; pwd

Sería suficiente para resolver mi problema (espero que ayude con el tuyo).

editar Las 1>/dev/nullpartes son opcionales; Los agrego para que pueda usar la línea anterior dentro de un script de shell sin salida adicional que no es necesaria en este caso.

Alexx Roche
fuente
Para poder pasar esto a un script bash y no terminar con una salida que no quiero. Intento agregar una respuesta lo más completa posible porque cuando encuentro commandline-fu me resulta fácil reducirlo a mis necesidades y espero que cualquiera que esté usando esto sea un poco como yo.
Alexx Roche
ok, agregué una edición explicando, (aunque algunos podrían sentir que les estoy enseñando a chupar huevos; los que saben que no necesitan la edición y los que no saben pueden cortar y pegar, o buscar eso función que no está directamente relacionada con la pregunta original.)
Alexx Roche
Lamentablemente es así :(
Braiam
-1

Incluso estaba teniendo el mismo problema con python virtualenv. Se corrigió con un simple reinicio

sudo shutdown -r now
Yunus
fuente
2
No creo que deba reiniciar para solucionarlo, solo siga las otras respuestas aquí y cda un directorio existente.
wjandrea
Si tiene una nueva pregunta, hágala haciendo clic en el botón Hacer pregunta . Incluya un enlace a esta pregunta si ayuda a proporcionar contexto. - De la opinión
N0rbert
1
@ N0rbert Esta no es una pregunta nueva, es claramente un intento de respuesta y proporciona una solución válida de IMHO (aunque seguramente no óptima).
Byte Commander
@ ByteCommander Hice clic en esto por error, lo siento.
N0rbert