sh : 0 : getcwd () 실패 : 해당 파일 또는 디렉토리가 없음


11

Ubuntu 12.04에서 ARM 코드를 컴파일하려고합니다.

코드를 로컬 디렉토리에 넣으면 모든 것이 잘 작동합니다. 그러나 인용 마운트 디렉토리에 코드를 넣으면이 오류가 발생합니다.

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

내 마운트 명령은 다음과 같습니다.

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

우분투 12.04 64 비트를 사용하고 있습니다

이 오류의 원인은 무엇입니까?


1
작업 디렉토리가 더 이상 존재하지 않습니다. cd [PATH]쉘을 입력 하여 기존 쉘로 이동하십시오.
David Foerster 8

또한 여기를 참조하십시오 : stackoverflow.com/a/21593371/7111561
derHugo

답변:


7

우분투 12.10 64 비트에서 파이썬 서브 프로세스를 통해 jshint를 사용 하여이 오류가 발생했습니다.

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

디렉토리를 삭제하거나 그 아래에서 디렉토리를 이동했으며 현재 디렉토리를 판별 할 수 없기 때문에 발생합니다.

이 문제가 있는지 확인하는 방법 :

명령을 실행하십시오 cd . (이 오류가 발생하면이 문제점이있는 것입니다).

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

디렉토리를 현재 디렉토리로 변경하려고 시도했지만 실패했습니다.

오류를 재현하는 방법 :

jshint는이 오류의 영향을받습니다. 디렉토리를 만들고 foo, CD를 넣고,myjavascript.js

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

jshint가 올바르게 실행되면 오류가 없다고 말합니다.

두 번째 터미널을 열고 rm -rf디렉토리 /home/el/foo를 아래에서 엽니 다 .

rm -rf /home/el/foo

jshint myjavascript.js첫 번째 터미널에서 다시 실행하면 오류가 발생합니다.

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

디렉토리가 사라졌습니다! 그리고 동일한 내용으로 바꾸더라도 서명이 다르고 터미널을 복구 getcwd할 수 없으므로 메소드 는 현재 디렉토리가 무엇인지 알 수 없습니다.

세 가지 솔루션 :

터미널은 현재 디렉토리가 사라 졌거나 서명이 변경되어 현재 디렉토리가 무엇인지 혼동합니다. 다음 중 하나를 수행하여 수정하십시오.

  1. cd ..오류가 발생하지 않을 때까지 명령을 실행하십시오 . 이것은 터미널을 파일 시스템과 다시 동기화합니다. 그런 다음 디렉토리로 다시 cd하십시오. 다시 시도하십시오. 오류가 사라집니다.

  2. 사용 su youruser단말기에서이 암호를 입력합니다. 새로 고침되어 같은 디렉토리로 돌아갑니다.

  3. 오래된 디렉토리 서명을 플러시하는 터미널을 닫았다가 다시 엽니 다. 또는 오래된 디렉토리 서명을 허용하거나 복구 할 수없는 모든 프로그램 (jshint) 또는 수천 개의 다른 프로그램에 nastymail을 보내십시오.


cd .."종종 충분히" 실행하는 대신 cd ~홈 폴더로 직접 이동할 수도 있습니다.
derHugo

4

같은 오류가 발생하지만 홈 디렉토리에서 스크립트를 실행하려고했습니다. 나는 그것을 해결했다 :

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

이것은 내 홈 디렉토리로 이동 한 다음 pwd를 실행하지만 원하는대로 실행할 수 있습니다. 팝은 나를 원래 위치로 다시 이동시킵니다. 뒤로 이동할 필요가 없다면

cd; pwd

내 문제를 해결하기에 충분할 것입니다 (문제가 도움이되기를 바랍니다).

편집1>/dev/null부분은 선택 사항입니다 필자는이 경우 필요하지 않은 추가 출력없이 쉘 스크립트 내에서 위의 행을 사용할 수 있도록 추가합니다.


그래서 이것을 bash 스크립트에 붙여 넣고 원하지 않는 출력으로 끝나지 않을 수 있습니다. commandline-fu를 찾을 때 내 필요에 맞게 쉽게 잘라 내고 이것을 사용하는 사람이 나처럼 될 것으로 기대하기 때문에 가능한 한 완전한 답변을 추가하려고합니다.
Alexx Roche

좋아, 나는 편집 설명을 추가했다. (어떤 사람들은 계란을 빨아 먹는 것을 가르치고 있다고 생각할 수도 있지만-편집이 필요하지 않은 사람들과 잘라 내거나 붙여 넣을 수있는 사람들은 원래 질문과 직접 ​​관련이없는 기능.)
Alexx Roche

안타깝게도 :(
Braiam

-1

심지어 python virtualenv와 동일한 문제가있었습니다. 간단한 재시작으로 수정되었습니다.

sudo shutdown -r now

2
나는 당신이 그것을 고치기 위해 다시 시작해야한다고 생각하지 않을 것입니다. 여기서 다른 대답과 cd기존 디렉토리를 따르십시오 .
wjandrea

새로운 질문이 있으면 질문하기 버튼 을 클릭하여 질문하십시오 . 컨텍스트를 제공하는 데 도움이되는 경우이 질문에 대한 링크를 포함하십시오. - 리뷰에서
N0rbert

1
@ N0rbert 이것은 새로운 질문이 아니며, IMHO의 유효한 (확실히 최적은 아니지만) 해결책을 제시하고 제공하려는 시도입니다.
바이트 사령관

@ByteCommander 실수로 이것을 클릭했습니다. 죄송합니다.
N0rbert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.