Aufstellen
Ich führe screen auf einem lokalen Computer aus und verwende verschiedene Bildschirmfenster, um eine Verbindung zu verschiedenen Hosts herzustellen. Es wäre schön, wenn Fensternamen während des SSH-Prozesses automatisch in Hostnamen geändert würden.
Ansätze
Ich habe verschiedene Variationen der folgenden beiden Ansätze ausprobiert:
1) Verwenden LocalComand
in der SSH-Konfigurationsdatei:
Host *
PermitLocalCommand yes
LocalCommand '[ "${TERM:0:6}" == "screen" ] && printf "\ek@%h\e\\"
2) Erstellen einer benutzerdefinierten Bash-Funktion:
# function to set screen name based on host and reset on exit
function ssh() {
echo -e '\033k'@$1'\033\\'
/usr/bin/env ssh -Y "$@"
echo -e '\033k'local'\033\\'
}
Problem
Beide Ansätze funktionieren, scheinen aber auch Dinge wie die automatische Vervollständigung zu beeinträchtigen:
$ scp user@host:~/.s<tab>
...o^[\\\\ ...cal^[\\\\
Frage
Gibt es eine Bedingung, die (zusätzlich zur Überprüfung, ob) verwendet werden könnte, die die Ausführung (oder die Ausführung der Funktion) nur bei Verbindung mit dem Host und nicht bei Verwendung zur automatischen Vervollständigung $TERM == screen
ermöglichen würde ?LocalCommand
ssh()