linux - tag - problema de inicio de shell cuando se hace clic en la pestaña, ¿qué pasa con getcwd?
puddletag (4)
Esto generalmente ocurre cuando su directorio actual ya no existe. Lo más probable es que desde otro terminal elimine ese directorio (desde dentro de un script o lo que sea). Para deshacerte de esto, en caso de que tu directorio actual haya sido recreado mientras tanto, simplemente cd
a otro directorio (existente) y luego cd
atrás; el más simple sería: cd; cd -
cd; cd -
.
una vez que haga clic en Tab en bash, aparecerá el mensaje de error, ¿qué ocurre?
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 shell?
Por casualidad, ¿esto ocurre en un directorio que usa OverlayFS (o algún otro tipo de sistema de archivos especial)?
Acabo de tener este problema donde mi versión compilada cruzada de bash usaría una implementación interna de getcwd
que tiene problemas con OverlayFS. Encontré información sobre esto aquí:
Parece que esto se puede rastrear a una implementación interna de getcwd () en bash. Cuando se compila de forma cruzada, no puede verificar el uso de malloc de getcwd (), por lo que es prudente y establece GETCWD_BROKEN y utiliza 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 realmente está bash_cv_getcwd_malloc=yes
bash y su biblioteca de C no realiza una llamada a getcwd malloc).
Sí, cd; y cd - funcionaría. La razón por la que se puede ver es que el directorio se está eliminando de cualquier otro terminal o cualquier otro programa y lo vuelve a crear. Por lo tanto, la entrada de i-node se modifica para que el programa no pueda acceder a la antigua entrada de i-node.
Simplemente cambie el directorio a otro y regrese. Probablemente, ese ha sido eliminado o movido.