Estoy usando un administrador de ventanas en mosaico y cambié de gnome-terminalmúltiples pestañas a múltiples urxvtinstancias administradas por el administrador de ventanas. Una de las características que echo de menos es la capacidad de abrir un nuevo terminal que por defecto es el directorio de trabajo del último.
En resumen: necesito una forma de abrir un nuevo urxvt (bash) que tenga como valor predeterminado $ PWD del último utilizado.
La única solución que viene a mi mente es guardar la ruta actual en cada uno cdcon algo como esto:
echo $PWD > ~/.last_dir
y restaurar la ruta en la nueva terminal de esta manera:
cd `cat ~/.last_dir`
Puedo obtener el segundo comando .bashrcpero no sé cómo ejecutar el primero en cada cambio de directorio :)
Cualquier solución más simple que no implique screeno tmuxuso es bienvenida.
fuente

tabbedextensión " " perl deurxvt?Respuestas:
Veo tres soluciones usando
.last_dir. Puede colocarecho $PWD > ~/.last_dircualquiera:En una función especial que sería un contenedor para
cd:Coloque esto en su
~/.bashrcy luego use encd_lugar de cd cada vez que desee que se almacene su nuevo directorio de trabajo.En su
$PROMPT_COMMAND( no recomendado ):Puede probar esto directamente desde la terminal o colocarlo
~/.bashrc. Sin embargo, esta solución desencadena una escritura de disco cada vez que aparece el mensaje, lo que podría causar problemas, pero por otro lado,.last_dircontendría el directorio actual sin importar cómo llegaste allí.En un script de extensión perl personalizado para
rxvt. Nunca he creado uno yo mismo, pero puedes encontrar bastantes ejemplos en la web.fuente
PROMPT_COMMAND, una de las variables de entorno más abusadas de todos los tiempos$PWDfue citado). Permítanme arreglar esto ... Ahí. Eso debería hacerlo.Actualmente estoy usando esta versión de la solución # 1
dentro de mi
.zshrcfuente
trap "[ -f ~/.last_dir ] && rm ~/.last_dir" EXITquiero comenzar siempre en mi casa, excepto cuando abro una nueva pestañaauto_cdfunción de zsh. Resulta que podemos usar un gancho que proporciona zsh: gist.github.com/jonleighton/1f0b96b49247a07dbaa30fbbe70b34f7Esto es realmente bastante trivial; si ejecuta
urxvtdesde suurxvtventana existente , la nueva ventana estará en el mismo directorio. Me hedupaliasurxvt &por esta razón. Si desea vincularlo a una tecla de acceso rápido, puede usar elbindcomando de bash . Por ejemplo, para vincularlo a F1:fuente
( urxvt & ) &>/dev/nulllugar de solo fondo.Simplemente agregue
. /etc/profile.d/vte.shsu~/.bashrcpara obtener la misma funciónfuente
Por supuesto, es un enfoque funcional para modificar
cdel comportamiento, pero me gustaría mostrar una solución más simple. En man bash (1) descubrí que si una bash interactiva sale, se ejecuta~/.bash_logoutsi existe. Entonces, en lugar de almacenar la ruta en cada invocación decdla última ruta, se puede guardar en la salida.Mi
~/.bash_logoutes muy simple:Y en algún lugar de mi
.bashrcpuse esta línea:fuente
.bash_logoutsolo se ejecuta allogin shellssalir, ese no es siempre el caso.bashsalga con:trap "echo $PWD > ~/.lastdir" EXIT"trapenfoque también es bueno, ¡me gusta!Muy a menudo uso múltiples ventanas de terminal a la vez, cada una con múltiples pestañas. Por ejemplo: una ventana para pestañas de desarrollo de código fuente, una ventana para archivos de látex, una ventana para ejecución de R y scripting, etc. Dentro de una ventana, quiero que un nuevo terminal con pestañas cambie al directorio que se usa en último lugar en esa ventana en particular (esto solía funcionar en el pasado, pero con la nueva versión de gnome, de alguna manera no funciona). La siguiente solución sucia funciona bien para mí. He puesto esto en .bashrc.
fuente