Unsere Lösung umfasst zwei Schritte.
- Übergeben Sie die Umgebungsvariable, die den Pfad zu dem Skript enthält, das Sie an die neue
tcsh
Instanz senden möchten . - Haben Sie
tcsh
das Skript als Quelle für diese Umgebungsvariable
Für Schritt 1 ssh
wird der Befehl ausgeführt, den Sie in Ihrer Standard-Shell (dem des Zielservers /etc/passwd
) angegeben haben. Ich gebe Ihnen hierfür verschiedene Lösungen.
- Wenn die Ziel-Shell
sh
/ istbash
: Verbinden Sie sich mit dem SSH-Server mit dem folgenden Befehl:ssh -t user@host 'export SOURCESCRIPT=/tmp/tmp.sh; exec /usr/bin/tcsh'
- Wenn die Ziel-Shell
csh
/ isttcsh
: Verbinden Sie sich mit dem SSH-Server mit dem folgenden Befehl:ssh -t user@host 'setenv SOURCESCRIPT /tmp/tmp.sh; exec /usr/bin/tcsh'
- Wenn Sie die SSH-Serverkonfiguration des Ziels ändern können, fügen Sie die
AcceptEnv
Option Hinzufügen / Ändern hinzu, um die Übergabe der Umgebungsvariablen/etc/ssh/sshd_config
zu ermöglichenSOURCESCRIPT
(z. B.AcceptEnv SOURCESCRIPT
), setzen Sie sieSOURCESCRIPT
in der lokalen Umgebung und stellen Sie eine Verbindung mit dem folgenden Befehl her:ssh -t -o SendEnv=SOURCESCRIPT user@host 'exec /usr/bin/tcsh'
Für Schritt 2 müssen wir ~/.tcshrc
Folgendes hinzufügen:
if $?SOURCESCRIPT then source $SOURCESCRIPT endif