Clonar la ruta es fácil si puede ejecutar su programa de terminal desde la línea de comandos. Suponiendo que esté usando xterm
, simplemente ejecute xterm &
desde el indicador del terminal que desea clonar. El nuevo xterm se iniciará en el mismo directorio, a menos que lo haya configurado para iniciarse como un shell de inicio de sesión. Cualquier variable de entorno exportada también se transferirá, pero las variables no exportadas no.
Una manera rápida y sucia de clonar todo el entorno (incluidas las variables no exportadas) es la siguiente:
# from the old shell:
set >~/environment.tmp
# from the new shell:
. ~/environment.tmp
rm ~/environment.tmp
Si ha configurado opciones de shell personalizadas, deberá volver a aplicarlas también.
Podría envolver todo este proceso en un script fácil de ejecutar. Haga que el script guarde el entorno en un archivo conocido y luego ejecútelo xterm
. Haga que su .bashrc verifique ese archivo, y descárguelo y elimínelo si lo encuentra.
Alternativamente, si no desea iniciar un terminal desde otro, o simplemente desea más control, podría usar un par de funciones que defina en .bashrc:
putstate () {
declare +x >~/environment.tmp
declare -x >>~/environment.tmp
echo cd "$PWD" >>~/environment.tmp
}
getstate () {
. ~/environment.tmp
}
EDITAR : Modificado putstate
para que copie el estado "exportado" de las variables de shell, para que coincida con el otro método. También se pueden copiar otras cosas, como las opciones de shell (ver help set
), por lo que hay espacio para mejorar este script.
bash
ejecutaría los comandos en el archivo y luego saldría, y el entorno actual del shell no cambiaría.Si inicia una
screen
(Pantalla GNU) en su entorno definido, el subproceso (es decirscreen
) usará ese entorno y podrá usarlo para generar nuevos terminales. Pero si quieres bifurcarlo en otro momento (ascreen
en ascreen
) comienza a ser complicado.fuente
En una situación similar, también me pareció útil iniciar el nuevo shell en el mismo directorio que el actual. Usé una receta como esta para comenzar la cáscara.
La opción -t es necesaria siempre que ejecute explícitamente un shell utilizando ssh. Hace que se cree una pseudo-tty para el proceso. Esto es necesario para que los comandos del historial y otras características interactivas funcionen correctamente. Las líneas anteriores en el script establecen DIR en el directorio actual y SHELL en el shell preferido del usuario.
fuente
mientras que las variables exportadas llegan al otro lado usando la función 'getstate' anterior, por alguna razón terminan no siendo exportadas allí (como se puede ver usando un simple os.getenv de python). parece funcionar mejor para mí al modificar getstate para que sea un alias:
fuente