La clonazione del percorso è semplice se è possibile eseguire il programma terminale dalla riga di comando. Supponendo che stai utilizzando xterm
, basta eseguire xterm &
dal prompt del terminale che si desidera clonare. Il nuovo xterm verrà avviato nella stessa directory, a meno che non sia stato configurato per l'avvio come shell di accesso. Anche le variabili d'ambiente esportate verranno trasferite, mentre le variabili non esportate no.
Un modo rapido e sporco per clonare l'intero ambiente (comprese le variabili non esportate) è il seguente:
# from the old shell:
set >~/environment.tmp
# from the new shell:
. ~/environment.tmp
rm ~/environment.tmp
Se hai impostato delle opzioni di shell personalizzate, dovrai riapplicare anche quelle.
Potresti avvolgere l'intero processo in uno script facilmente eseguibile. Chiedi allo script di salvare l'ambiente in un file noto, quindi eseguirlo xterm
. Chiedi al tuo .bashrc di cercare quel file, e procuralo e cancellalo se trovato.
In alternativa, se non si desidera avviare un terminale da un altro o si desidera semplicemente un maggiore controllo, è possibile utilizzare una coppia di funzioni definite in .bashrc:
putstate () {
declare +x >~/environment.tmp
declare -x >>~/environment.tmp
echo cd "$PWD" >>~/environment.tmp
}
getstate () {
. ~/environment.tmp
}
EDIT : modificato in putstate
modo da copiare lo stato "esportato" delle variabili della shell, in modo che corrisponda all'altro metodo. Ci sono anche altre cose che potrebbero essere copiate, come le opzioni della shell (vedi help set
) - quindi c'è spazio per miglioramenti in questo script.