problema di shell shell quando si fa clic sulla scheda, cosa c'è di sbagliato in getcwd?


153

una volta che faccio clic su Tab su bash, apparirà il messaggio di errore, cosa c'è che non va?

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 volte, il messaggio di errore è:

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

come risolvere il problema di shell init?

Risposte:


281

Ciò si verifica in genere quando la directory corrente non esiste più. Molto probabilmente, da un altro terminale rimuovi quella directory (dall'interno di uno script o altro). Per sbarazzarsi di questo, nel caso in cui la directory corrente sia stata ricreata nel frattempo, solo cdin un'altra directory (esistente) e poi cdindietro; la più semplice potrebbe essere: cd; cd -.


2
non credo che la mia dir non esista, non qualcuno l'ha ricreata, sono in / root ... quindi il problema
potrebbe essere

1
puoi controllare la tua variabile env HOME? echo $HOME; se questo indica una posizione inesistente, non è così.
Costi Ciudatu,

1
(Uso shell in tmux) La scheda funziona bene alcune volte, ma a volte quando creo una nuova scheda con tmux, premo Tab e appare questo errore, non so cosa sia successo :(
hugemeow,

@kevinarpe Buono a sapersi, grazie! Ho sempre pensato che fosse abbastanza intelligente da non fare nullacd .
Costi Ciudatu,

2
@kevinarpe, sì, $PWDè garantito da POSIX per essere definito. Vedi pubs.opengroup.org/onlinepubs/9699919799/utilities/…
Charles Duffy,

61

Basta cambiare la directory con un'altra e tornare indietro. Probabilmente quello è stato cancellato o spostato.


7

Per caso, ciò accade in una directory che utilizza OverlayFS (o qualche altro tipo di file system speciale)?

Ho appena avuto questo problema in cui la mia versione cross-compilata di bash utilizzava un'implementazione interna getcwdche presenta problemi con OverlayFS. Ho trovato informazioni su questo qui:

Sembra che questo possa essere ricondotto a un'implementazione interna di getcwd () in bash. Se compilato in modo incrociato, non può controllare l'uso di getcwd () di malloc, quindi è prudente e imposta GETCWD_BROKEN e utilizza un'implementazione interna di getcwd (). Questa implementazione interna non sembra funzionare bene con OverlayFS.

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

Puoi configurare e ricostruire bash con bash_cv_getcwd_malloc=yes(se stai effettivamente costruendo bash e la tua libreria C non esegue un richiamo getcwd).


Sono stato in grado di correggere il mio errore facendo gli aggiornamenti completi della libreria
Richard Day, il

5

Sì, cd; e cd - funzionerebbe. Il motivo può essere che la directory viene eliminata da qualsiasi altro terminale o altro programma e ricrearla. Quindi la voce i-node viene modificata in modo che il programma non possa accedere alla vecchia voce i-node.


Sono stato in grado di risolverlo su Ubuntu 14 facendo gli aggiornamenti completi della libreria qui: digitalocean.com/community/tutorials/…
Richard Day
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.