problema de inicio de shell al hacer clic en la pestaña, ¿qué hay de malo con getcwd?

153

una vez que haga clic en Tab en bash, aparecerá el mensaje de error, ¿qué pasa?

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

a veces, el mensaje de error es:

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

¿Cómo resolver el problema de shell init?

enormemeow
fuente

Respuestas:

281

Esto generalmente ocurre cuando su directorio actual ya no existe. Lo más probable es que desde otro terminal elimines ese directorio (desde un script o lo que sea). Para deshacerse de esto, en caso de que su directorio actual se haya recreado mientras tanto, solo cden otro directorio (existente) y luego de cdregreso; el más simple sería: cd; cd -.

Costi Ciudatu
fuente
2
i no creo que mi dir no es existir, no alguien ha recreado, estoy en / root ... por lo que el problema tal vez un poco diferente como usted dice ...
hugemeow
1
¿puede verificar su variable HOME env? echo $HOME; si eso apunta a una ubicación inexistente, eso no es todo.
Costi Ciudatu
1
(uso shell en tmux) La pestaña funciona bien algunas veces, pero a veces cuando creo una nueva pestaña con tmux, presiono Tab, y aparece este error, no sé qué pasó :(
hugemeow
@kevinarpe Eso es bueno saber, gracias! Siempre pensé que era lo suficientemente inteligente como para no hacer nadacd .
Costi Ciudatu
2
@kevinarpe, sí, $PWDPOSIX garantiza su definición. Ver pubs.opengroup.org/onlinepubs/9699919799/utilities/…
Charles Duffy
61

Simplemente cambie el directorio a otro y regrese. Probablemente esa haya sido eliminada o movida.

Meetai.com
fuente
7

Por casualidad, ¿esto ocurre en un directorio que usa OverlayFS (o algún otro tipo especial de sistema de archivos)?

Acabo de tener este problema en el que mi versión de compilación cruzada de bash usaría una implementación interna getcwdque tiene problemas con OverlayFS. Encontré información sobre esto aquí:

Parece que esto se puede rastrear hasta una implementación interna de getcwd () en bash. Cuando se compila de forma cruzada, no puede verificar el uso de malloc en getcwd (), por lo que es cauteloso y establece GETCWD_BROKEN y usa una implementación interna de getcwd (). Esta implementación interna no parece funcionar bien con OverlayFS.

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

Puede configurar y reconstruir bash con bash_cv_getcwd_malloc=yes(si en realidad está construyendo bash y su biblioteca C no realiza una llamada getcwd).

jdknight
fuente
Pude corregir mi error haciendo las actualizaciones completas de la biblioteca
Richard Day
5

Sí, cd; y cd - funcionaría. La razón por la que puede ver es que el directorio se está eliminando de cualquier otro terminal o cualquier otro programa y volver a crearlo. Por lo tanto, la entrada de i-node se modifica para que el programa no pueda acceder a la antigua entrada de i-node.

Viraj Kulkarni
fuente
Pude arreglarlo en ubuntu 14 haciendo las actualizaciones completas de la biblioteca aquí: digitalocean.com/community/tutorials/…
Richard Day