클릭 탭시 쉘 초기화 문제, getcwd의 문제점은 무엇입니까?


153

bash에서 Tab을 클릭하면 오류 메시지가 표시됩니다. 무엇이 잘못 되었습니까?

symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success

때때로 오류 메시지는 다음과 같습니다.

shell-init: error retrieving current directory: getcwd: cannot access parent directories: No s uch file or directory

쉘 초기화 문제를 해결하는 방법?

답변:


280

일반적으로 현재 디렉토리가 더 이상 존재하지 않을 때 발생합니다. 대부분의 경우 다른 터미널에서 해당 디렉토리를 제거합니다 (스크립트 또는 그 밖의 것에서). 이를 제거하기 위해, 현재 디렉토리가 cd다른 (기존) 디렉토리 로 재 작성된 후 cd다시 생성 된 경우; 가장 간단한 방법은 다음과 같습니다 cd; cd -..


2
나는 내 디렉토리가 존재하지 않는다고 생각하지 않는다. 누군가 그것을 다시 만들지 않았다. 나는 / root에있다. 그래서 문제는 당신의 말과 약간 다를 수있다 ...
hugemeow

1
HOME env 변수를 확인할 수 있습니까? echo $HOME; 존재하지 않는 위치를 가리키는 경우에는 그렇지 않습니다.
Costi Ciudatu

1
(내가 TMUX에서 쉘을 사용) 탭이 아니라 몇 번을 작동하지만 때로는 내가 TMUX, Tab 키를 눌러,이 오류가 나타납니다 새로운 탭을 만들 때, 내가 :( 무슨 일이 있었는지 모른다
hugemeow

@kevinarpe 감사합니다. 감사합니다. 나는 항상에 아무것도 할 수있는 스마트 충분하다고 생각cd .
Costi Ciudatu

2
@kevinarpe $PWD는 POSIX에 의해 정의되도록 보장합니다. 참조 pubs.opengroup.org/onlinepubs/9699919799/utilities/...
찰스 더피에게

61

디렉토리를 다른 디렉토리로 변경하고 다시 오십시오. 아마도 하나가 삭제 또는 이동되었을 수 있습니다.


7

우연히 이것은 OverlayFS (또는 다른 특수 파일 시스템 유형)를 사용하는 디렉토리에서 발생합니까?

크로스 컴파일 된 버전의 bash가 getcwdOverlayFS와 관련된 내부 구현을 사용하는 경우이 문제 가 발생했습니다. 여기에 대한 정보가 있습니다.

이것은 bash에서 getcwd ()의 내부 구현으로 추적 될 수있는 것 같습니다. 크로스 컴파일시 malloc의 getcwd () 사용을 확인할 수 없으므로 GETCWD_BROKEN을 신중하게 설정하고 getcwd ()의 내부 구현을 사용합니다. 이 내부 구현은 OverlayFS에서 제대로 작동하지 않는 것 같습니다.

http://permalink.gmane.org/gmane.linux.embedded.yocto.general/25204

bash를 구성하고 다시 빌드 할 수 있습니다 bash_cv_getcwd_malloc=yes(실제로 bash를 빌드하고 C 라이브러리가 getcwd 호출을 malloc하는 경우).


전체 라이브러리 업데이트를 수행하여 오류를 해결할 수있었습니다
Richard Day

5

예, cd; 그리고 cd-작동합니다. 그 이유는 다른 터미널이나 다른 프로그램에서 디렉토리를 삭제하고 다시 작성하기 때문입니다. 따라서 i- 노드 항목이 수정되어 프로그램이 이전 i- 노드 항목에 액세스 할 수 없습니다.


여기에서 전체 라이브러리 업데이트를 수행하여 우분투 14 에서이
Richard Day
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.