Estoy usando un administrador de ventanas en mosaico y cambié de gnome-terminal
múltiples pestañas a múltiples urxvt
instancias 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 cd
con 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 .bashrc
pero no sé cómo ejecutar el primero en cada cambio de directorio :)
Cualquier solución más simple que no implique screen
o tmux
uso es bienvenida.
fuente
tabbed
extensión " " perl deurxvt
?Respuestas:
Veo tres soluciones usando
.last_dir
. Puede colocarecho $PWD > ~/.last_dir
cualquiera:En una función especial que sería un contenedor para
cd
:Coloque esto en su
~/.bashrc
y 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_dir
contendrí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$PWD
fue citado). Permítanme arreglar esto ... Ahí. Eso debería hacerlo.Actualmente estoy usando esta versión de la solución # 1
dentro de mi
.zshrc
fuente
trap "[ -f ~/.last_dir ] && rm ~/.last_dir" EXIT
quiero comenzar siempre en mi casa, excepto cuando abro una nueva pestañaauto_cd
función de zsh. Resulta que podemos usar un gancho que proporciona zsh: gist.github.com/jonleighton/1f0b96b49247a07dbaa30fbbe70b34f7Esto es realmente bastante trivial; si ejecuta
urxvt
desde suurxvt
ventana existente , la nueva ventana estará en el mismo directorio. Me hedup
aliasurxvt &
por esta razón. Si desea vincularlo a una tecla de acceso rápido, puede usar elbind
comando de bash . Por ejemplo, para vincularlo a F1:fuente
( urxvt & ) &>/dev/null
lugar de solo fondo.Simplemente agregue
. /etc/profile.d/vte.sh
su~/.bashrc
para obtener la misma funciónfuente
Por supuesto, es un enfoque funcional para modificar
cd
el 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_logout
si existe. Entonces, en lugar de almacenar la ruta en cada invocación decd
la última ruta, se puede guardar en la salida.Mi
~/.bash_logout
es muy simple:Y en algún lugar de mi
.bashrc
puse esta línea:fuente
.bash_logout
solo se ejecuta allogin shells
salir, ese no es siempre el caso.bash
salga con:trap "echo $PWD > ~/.lastdir" EXIT"
trap
enfoque 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