sh: 0: getcwd () nie powiodło się: brak takiego pliku lub katalogu

11

Próbuję skompilować kod ARM w Ubuntu 12.04.

Wszystko działa dobrze, kiedy umieszczam mój kod w katalogu lokalnym. Ale kiedy umieszczam kod w cytowanym katalogu montowania, ten błąd się zdarza:

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

Oto moje polecenie 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

Używam Ubuntu 12.04 64bit

Co spowodowałoby ten błąd?

dongjiawei
źródło
1
Twój katalog roboczy już nie istnieje. Wpisz cd [PATH]swoją powłokę, aby przejść do istniejącej.
David Foerster,
zobacz także tutaj: stackoverflow.com/a/21593371/7111561
derHugo

Odpowiedzi:

7

Wystąpił ten błąd przy użyciu jshint poprzez podprocesję python na Ubuntu 12.10 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

Jest to spowodowane tym, że katalog został usunięty lub przeniesiony spod niego i nie można ustalić bieżącego katalogu.

Jak stwierdzić, czy masz ten problem:

Uruchom polecenie cd . (jeśli pojawi się ten błąd, masz ten problem).

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

Próbowałeś zmienić katalog na bieżący katalog, ale nie mogłeś.

Jak odtworzyć błąd:

Ten błąd dotyczy jshint. Utwórz katalog foo, włóż do niego cd, utwórz plik o nazwiemyjavascript.js

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

jshint działa poprawnie, mówi, że nie ma błędów, które są poprawne.

Otwórz drugi terminal i wyjmij rm -rfkatalog /home/el/foospod spodu.

rm -rf /home/el/foo

Uruchom jshint myjavascript.jsponownie z pierwszego terminala, a pojawi się błąd:

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

Katalog zniknął! I nawet jeśli miałbyś zastąpić go tą samą zawartością, ma on inną sygnaturę i terminal nie może odzyskać, metoda getcwdnie może wiedzieć, jaki jest bieżący katalog.

Trzy rozwiązania:

Terminal jest zdezorientowany co do bieżącego katalogu, ponieważ jego nie ma lub jego podpis się zmienił. Wykonaj jedną z nich, aby to naprawić:

  1. Uruchom polecenie, cd ..aż przestaną pojawiać się błędy. Spowoduje to ponowną synchronizację terminala z systemem plików. Następnie wróć do katalogu. Spróbuj ponownie. Błąd znika.

  2. Użyj su youruserw terminalu, wprowadź hasło. Odświeża i wraca do tego samego katalogu.

  3. Zamknij i ponownie otwórz terminal, który usuwa nieaktualne sygnatury katalogów. Lub wyślij wiadomość pocztową do dowolnego programu (jshint) lub tysięcy innych programów, które nie mogą tolerować lub odzyskać po starych podpisach katalogów.

Eric Leschinski
źródło
zamiast biegać cd ..„wystarczająco często”, możesz również cd ~przejść bezpośrednio do swojego katalogu głównego
derHugo
4

Otrzymuję ten sam błąd, ale próbowałem uruchomić skrypt w moim katalogu domowym. Rozwiązałem to za pomocą:

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

To przenosi mój do mojego katalogu domowego, następnie uruchamia pwd (ale możesz uruchomić wszystko, co chcesz), a następnie popd przenosi mnie z powrotem do miejsca, w którym byłem. Jeśli nie musisz się wtedy cofać

cd; pwd

Wystarczyłoby rozwiązać mój problem (mam nadzieję, że to pomoże w twoim).

edit Te 1>/dev/nullczęści są opcjonalne; Dodaję je, aby móc użyć powyższej linii w skrypcie powłoki bez dodatkowych danych wyjściowych, które nie są potrzebne w tym przypadku.

Alexx Roche
źródło
Tak, że mogę wkleić to do skryptu bash i nie skończyć z wyjściem, którego nie chcę. Próbuję dodać tak kompletną odpowiedź, jak tylko potrafię, ponieważ kiedy znajduję wiersz poleceń, łatwo jest go ograniczyć do moich potrzeb i oczekuję, że każdy, kto używa tego, będzie trochę podobny do mnie.
Alexx Roche,
ok, dodałem objaśnienie edycji (choć niektórzy mogą uważać, że uczę je ssać jajka - ci, którzy wiedzą, nie potrzebują edycji, a ci, którzy nie wiedzą, mogą wycinać i wklejać lub sprawdzać to funkcja, która nie jest bezpośrednio związana z pierwotnym pytaniem.)
Alexx Roche,
Niestety tak jest :(
Braiam
-1

Nawet ja miałem ten sam problem z python virtualenv. Zostało to poprawione przez prosty restart

sudo shutdown -r now
yunus
źródło
2
Nie sądzę, że będziesz musiał ponownie uruchomić, aby to naprawić, po prostu postępuj zgodnie z innymi odpowiedziami tutaj i cddo istniejącego katalogu.
wjandrea
Jeśli masz nowe pytanie, zadaj je, klikając przycisk Zadaj pytanie . Dołącz link do tego pytania, jeśli pomaga to w zapewnieniu kontekstu. - Z recenzji
N0rbert
1
@ N0rbert To nie jest nowe pytanie, to wyraźnie próba odpowiedzi i dostarczenie prawidłowego (choć na pewno nie optymalnego) rozwiązania IMHO.
Bajt Dowódca
@ByteCommander Kliknąłem przez pomyłkę, przepraszam.
N0rbert,