0 votos

pwd en bash está mal después de enviar el directorio a la basura

Si muevo un directorio a la basura que ya estoy cd'd en ese directorio, pwd no informará de ningún cambio de ubicación. Podré seguir haciendo todo en bash normalmente como si no hubiera habido ningún cambio en el directorio, aunque Finder diga que no existe.

pwd debe ser siempre preciso. Esto no parece ser el caso.

Por ejemplo, estoy cd'd a esta ruta: /Users/me/Desktop/goingToTrash/subdir

Si me muevo a la basura /Users/me/Desktop/goingToTrash , pwd informará que estoy en /Users/me/Desktop/goingToTrash/subdir aunque el buscador diga que no existe. Así que si vuelvo a crear el directorio eliminado, bash estará trabajando desde el antiguo directorio (supongo que en la papelera, aún no lo he verificado) en lugar del nuevo que acabo de crear, y pwd no proporcionará ninguna pista de que esto ha ocurrido.

Mucho peor, si "muevo a la basura" un directorio y me cd'd a uno de sus subdirectorios, a continuación, volver a crear la estructura de directorios, de un sub-directorio que puedo cd ../subdir , vuelvo a estar mágicamente en el "nuevo" directorio, a pesar de que el padre fue "movido a la basura" en lugar de permanecer en la estructura del directorio que fue movido a la basura.

0 votos

¿Has probado a recargar la envolvente de bash? . ~/.bash_profile

0 votos

@CJDana La respuesta de abajo parece funcionar. No quiero estar preocupado por el estado de bash para cualquier (o en este caso cada) comando. Debería estar siempre "actualizado".

3voto

Sunil Puntos 11

Este comportamiento en realidad no tiene nada que ver con el directorio .Trash. Puedes llegar a una situación similar si mueves tu directorio de trabajo actual a cualquier otra ubicación. El pwd comando y echo $PWD ambos serán inexactos.

Lo que he encontrado es que el inicio de un nuevo proceso bash identificará correctamente la nueva ubicación de su directorio de trabajo actual. Por lo tanto, una solución sería simplemente "refrescar" su proceso bash actual con uno nuevo con el comando exec bash .

0 votos

¿Hay alguna forma de conseguir que el prompt de la terminal también sea preciso? Por ejemplo, estoy usando export PS1='\u@\H:\w$' para establecer mi aviso. \w es para el directorio de trabajo actual, que sigue siendo inexacto.

2 votos

cd . parece forzar una actualización también, sin los problemas potenciales que tiene el reemplazo de la cáscara.

1 votos

Encontré que cd . le llevará al directorio equivocado si existe uno nuevo donde estaba, mientras que exec bash siempre te lleva al directorio original.

3voto

Michael Zhou Puntos 167

YMMV cuando hay una inacción entre el shell y el Finder.app. Lo mejor es usar

/bin/pwd

en lugar de la función incorporada pwd .

Puedes añadir esta línea a tu ~/.bashrc y reiniciar bash para "arreglar" este problema.

alias pwd="/bin/pwd"

Una alternativa a /bin/pwd (con o sin el alias) es pwd -P . El -P a la opción incorporada pwd se explica en la salida de help pwd .

2 votos

"El directorio de trabajo actual sólo cambiará cuando se haga a través del shell" es erróneo: puedes mover una carpeta a la papelera en el shell y el pwd incorporado no se actualizará (por ejemplo mv ../../test ~/.Trash/ y su directorio de trabajo actual es /Users/user/test/subdir/)

1 votos

@Klanomath Correcto- editaré el post.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X