Das Klonen des Pfads ist einfach, wenn Sie Ihr Terminalprogramm über die Befehlszeile ausführen können. Angenommen, Sie verwenden xterm
, führen Sie einfach xterm &
die Eingabeaufforderung des Terminals aus, das Sie klonen möchten. Das neue xterm wird im selben Verzeichnis gestartet, es sei denn, Sie haben es so konfiguriert, dass es als Anmeldeshell gestartet wird. Alle exportierten Umgebungsvariablen werden ebenfalls übertragen, nicht exportierte Variablen jedoch nicht.
Eine schnelle und schmutzige Methode zum Klonen der gesamten Umgebung (einschließlich nicht exportierter Variablen) ist wie folgt:
# from the old shell:
set >~/environment.tmp
# from the new shell:
. ~/environment.tmp
rm ~/environment.tmp
Wenn Sie benutzerdefinierte Shell-Optionen festgelegt haben, müssen Sie diese ebenfalls erneut anwenden.
Sie können diesen gesamten Prozess in ein leicht ausführbares Skript einbinden. Lassen Sie das Skript die Umgebung in einer bekannten Datei speichern und dann ausführen xterm
. Lassen Sie Ihre .bashrc-Datei nach dieser Datei suchen, sie beschaffen und löschen, wenn sie gefunden wird.
Wenn Sie nicht ein Terminal von einem anderen aus starten oder nur mehr Kontrolle wünschen, können Sie alternativ zwei Funktionen verwenden, die Sie in .bashrc definieren:
putstate () {
declare +x >~/environment.tmp
declare -x >>~/environment.tmp
echo cd "$PWD" >>~/environment.tmp
}
getstate () {
. ~/environment.tmp
}
BEARBEITEN : Geändert, putstate
so dass der "exportierte" Status der Shell-Variablen kopiert wird, um mit der anderen Methode übereinzustimmen. Es gibt andere Dinge, die ebenfalls kopiert werden könnten, z. B. Shell-Optionen (siehe help set
). Daher gibt es in diesem Skript Raum für Verbesserungen.
bash
Würde eine neue Kopie von die Befehle in der Datei ausführen und dann beenden, und die Umgebung der aktuellen Shell würde sich nicht ändern.Wenn Sie
screen
in Ihrer definierten Umgebung einen (GNU-Bildschirm) starten , wird diese Umgebung vom Unterprozess (dhscreen
) verwendet und Sie können damit neue Terminals erzeugen. Aber wenn Sie es ein anderes Mal (ascreen
in ascreen
) gabeln wollen, wird es schwierig.quelle
In einer ähnlichen Situation fand ich es auch nützlich, die neue Shell im selben Verzeichnis wie die aktuelle zu starten. Ich habe ein Rezept wie dieses verwendet, um die Shell zu starten.
Die Option -t wird immer dann benötigt, wenn Sie eine Shell explizit mit ssh ausführen. Dadurch wird eine Pseudo-Tty für den Prozess erstellt. Dies ist erforderlich, damit Verlaufsbefehle und andere interaktive Funktionen ordnungsgemäß funktionieren. Frühere Zeilen im Skript setzen DIR auf das aktuelle Verzeichnis und SHELL auf die vom Benutzer bevorzugte Shell.
quelle
Während exportierte Variablen mit der obigen Funktion 'getstate' auf die andere Seite gelangen, werden sie aus irgendeinem Grund dort nicht exportiert (wie mit einem einfachen os.getenv aus Python zu sehen ist). Es scheint für mich besser zu funktionieren, wenn getstate als Alias geändert wird:
quelle