pwd in bash è sbagliato dopo aver inviato la directory al cestino

0

Se sposto una directory nel cestino che ho già inserito in tale directory, pwd non segnalerà cambiamenti nella posizione. Sarò ancora in grado di fare tutto in bash normalmente, come se non ci fosse alcun cambiamento nella directory, anche se Finder dice che non esiste.

pwd dovrebbe sempre essere accurato. Questo non sembra essere il caso.

Ad esempio, sono cd'd su questo percorso: /Users/me/Desktop/goingToTrash/subdir

Se mi sposto nel cestino /Users/me/Desktop/goingToTrash , pwd riporterà che sono in /Users/me/Desktop/goingToTrash/subdir , anche se il finder dice che non esiste. Quindi, se creo la directory cancellata, bash funzionerà dalla vecchia directory (sto assumendo nel cestino, non ho ancora verificato) invece del nuovo che ho appena creato, e pwd non fornirà alcun indizio di ciò che è successo.

Molto peggio, se "sposto nel cestino" una directory e sono cdd in una delle sue sottodirectory, quindi ricreare la struttura della directory, da una sottodirectory posso cd ../subdir , sono magicamente di nuovo in la "nuova" directory, anche se il genitore è stato "spostato nel cestino" invece di rimanere nella struttura della directory che è stata spostata nel cestino.

    
posta Zamicol 28.09.2016 - 18:14
fonte

2 risposte

3

YMMV quando c'è una inazione tra la shell e Finder.app. È meglio usare -

/bin/pwd

al posto del pwd incorporato.

Puoi aggiungere questa linea al tuo ~ / .bashrc e resettare bash per "correggere" questo problema.

alias pwd="/bin/pwd"

Un'alternativa a /bin/pwd (con o senza alias) è pwd -P . L'opzione -P alla pwd incorporata è spiegata nell'output di help pwd .

    
risposta data 28.09.2016 - 18:58
fonte
3

Questo comportamento in realtà non ha nulla a che fare con la directory .Trash. È possibile entrare in una situazione simile spostando la directory di lavoro corrente in qualsiasi altra posizione. Il comando pwd e echo $PWD saranno entrambi imprecisi.

Quello che ho trovato è che l'avvio di un nuovo processo bash identificherà correttamente la nuova posizione della directory di lavoro corrente. Pertanto, una soluzione alternativa sarebbe semplicemente "aggiornare" il processo di bash corrente con uno nuovo con il comando exec bash .

    
risposta data 28.09.2016 - 18:51
fonte

Leggi altre domande sui tag