sh: 0: getcwd () non riuscito: nessun file o directory


11

Sto cercando di compilare il codice ARM in Ubuntu 12.04.

Tutto funziona bene quando inserisco il mio codice nella directory locale. Ma quando inserisco il codice nella directory di montaggio citata, si verifica questo errore:

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

Ecco il mio comando mount:

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

Sto usando Ubuntu 12.04 a 64 bit

Cosa causerebbe questo errore?


1
La tua directory di lavoro non esiste più. Digita cd [PATH]la shell per passare a una esistente.
David Foerster,

Risposte:


7

Ho riscontrato questo errore usando jshint tramite un sottoprocesso di Python su Ubuntu 12.10 a 64 bit.

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

È causato dal fatto che hai eliminato o spostato una directory da sotto di essa e la directory corrente non può essere determinata.

Come sapere se stai riscontrando questo problema:

Esegui il comando cd . (Se ricevi questo errore, hai questo problema).

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

Hai provato a cambiare directory nella tua directory corrente e non ci sei riuscito.

Come riprodurre l'errore:

jshint è interessato da questo errore. Crea una directory foo, cd in essa, crea un file chiamatomyjavascript.js

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

jshint funziona correttamente, dice che non ci sono errori che sono corretti.

Aprire un secondo terminale e rm -rfla directory /home/el/foofuori da sotto.

rm -rf /home/el/foo

Esegui di jshint myjavascript.jsnuovo dal tuo primo terminale e otterrai un errore:

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

La directory è sparita! E anche se dovessi sostituirlo con lo stesso contenuto, ha una firma diversa e il terminale non può recuperare, il metodo getcwdnon può sapere quale sia la directory corrente.

Tre soluzioni:

Il terminale è confuso su quale sia la directory corrente perché è andata o la sua firma è cambiata. Effettuate una di queste operazioni per risolverlo:

  1. Esegui il comando cd ..fino a quando non smetti di ricevere errori. Questo ri sincronizza il terminale con il filesystem. Quindi cd nella tua directory. Riprova. L'errore scompare.

  2. Utilizzare su yourusernel terminale, inserire la password. Si aggiorna e ti riporta alla stessa directory.

  3. Chiudere e riaprire il terminale che elimina le firme di directory non aggiornate. Oppure invia un nastymail a qualunque programma (jshint) o alle migliaia di altri programmi che non possono tollerare o recuperare da firme di directory non aggiornate.


invece di correre cd .."abbastanza spesso" potresti anche cd ~direttamente direttamente a casa tua
derHugo

4

Ottengo lo stesso errore, ma stavo cercando di eseguire uno script nella mia home directory. L'ho risolto con:

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

Questo mi porta nella mia directory home, quindi esegue pwd (ma puoi eseguire tutto ciò che ti piace) e quindi il pop mi riporta a dove mi trovavo. Se non hai bisogno di tornare indietro allora

cd; pwd

Basterebbe a risolvere il mio problema, (spero che ti aiuti con il tuo.)

modifica Le 1>/dev/nullparti sono opzionali; Li aggiungo in modo da poter utilizzare la riga sopra all'interno di uno script di shell senza output aggiuntivo che non è necessario in questo caso.


In questo modo posso incollarlo in uno script bash e non finire con un output che non voglio. Cerco di aggiungere una risposta quanto più completa possibile perché quando trovo commandline-fu trovo facile ridurlo in base alle mie esigenze e mi aspetto che chiunque lo usi sia un po 'come me.
Alexx Roche,

ok, ho aggiunto una modifica che spiega, (anche se alcuni potrebbero pensare che sto insegnando loro a succhiare le uova - quelli che sanno non hanno bisogno della modifica e quelli che non sanno possono tagliare e incollare, o cercare che funzione che non è direttamente correlata alla domanda originale.)
Alexx Roche

Purtroppo è così :(
Braiam

-1

Anche io stavo avendo lo stesso problema con python virtualenv. È stato corretto con un semplice riavvio

sudo shutdown -r now

2
Non penso che dovresti riavviare per risolverlo, basta seguire le altre risposte qui e cdverso una directory esistente.
wjandrea,

Se hai una nuova domanda, chiedila facendo clic sul pulsante Poni domanda . Includere un collegamento a questa domanda se aiuta a fornire un contesto. - Dalla recensione
N0rbert,

1
@ N0rbert Questa non è una nuova domanda, è chiaramente un tentativo di risposta e di fornire una soluzione IMHO valida (anche se sicuramente non ottimale).
Byte Commander

@ByteCommander Ho cliccato questo per errore, mi dispiace.
N0rbert,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.