problema no shell init ao clicar na guia, o que há de errado com o getcwd?

153

Depois de clicar em Tab no bash, a mensagem de erro será exibida, o que há de errado?

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

às vezes, a mensagem de erro é:

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

como resolver o problema de shell init?

hugemeow
fonte

Respostas:

281

Isso geralmente ocorre quando o diretório atual não existe mais. Provavelmente, de outro terminal você remove esse diretório (de dentro de um script ou o que seja). Para se livrar disso, caso seu diretório atual tenha sido recriado nesse meio tempo, apenas cdpara outro diretório (existente) e depois cdretorne; o mais simples seria: cd; cd -.

Costi Ciudatu
fonte
2
Eu não acho que o meu dir não existir, não alguém ter recriado-lo, eu estou em / root ... então a questão talvez um pouco diferente enquanto está dizendo ...
hugemeow
1
você pode verificar sua variável de ambiente HOME? echo $HOME; se isso aponta para um local inexistente, não é?
Costi Ciudatu 9/09/12
1
(eu uso o shell no tmux) A guia funciona bem algumas vezes, mas às vezes quando eu crio uma nova guia com o tmux, pressione Tab, e esse erro aparece, não sei o que aconteceu :(
hugemeow
@kevinarpe Isso é bom saber, obrigado! Eu sempre pensei que era inteligente o suficiente para não fazer nada sobrecd .
Costi Ciudatu
2
@kevinarpe, sim, $PWDé garantido pelo POSIX para ser definido. Veja pubs.opengroup.org/onlinepubs/9699919799/utilities/…
Charles Duffy
61

Apenas mude o diretório para outro e volte. Provavelmente esse foi excluído ou movido.

Meetai.com
fonte
7

Por acaso, isso está ocorrendo em um diretório usando OverlayFS (ou algum outro tipo especial de sistema de arquivos)?

Acabei de ter esse problema em que minha versão compilada do bash usaria uma implementação interna getcwdcom problemas no OverlayFS. Encontrei informações sobre isso aqui:

Parece que isso pode ser atribuído a uma implementação interna de getcwd () no bash. Quando compilado em cruz, ele não pode verificar o uso do malloc por getcwd (), portanto, é cauteloso e define GETCWD_BROKEN e usa uma implementação interna de getcwd (). Essa implementação interna parece não funcionar bem com o OverlayFS.

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

Você pode configurar e reconstruir o bash com bash_cv_getcwd_malloc=yes(se você estiver construindo o bash e sua biblioteca C fizer uma chamada getcwd).

jdknight
fonte
Eu era capaz de corrigir o meu erro, fazendo as atualizações completas da biblioteca
Richard Day
5

Sim cd; e cd - funcionaria. O motivo pelo qual pode ver é que o diretório está sendo excluído de qualquer outro terminal ou qualquer outro programa e o recrie. A entrada do nó i é modificada para que o programa não possa acessar a entrada antiga do nó i.

Viraj Kulkarni
fonte
Eu consegui consertá-lo no ubuntu 14 fazendo as atualizações completas da biblioteca aqui: digitalocean.com/community/tutorials/…
Richard Day