Ich bin nicht sicher, wie Sie Ihren lokalen .zshrc
Server auf einen Remote-Server übertragen können (ohne ihn dauerhaft dort zu speichern). Dies funktioniert für mich, wenn ich meine Anmeldeshell auf einem Remote-Server ändere.
Da es sich um ein freigegebenes Konto handelt, kann zsh
ich es mit dieser Methode nur für mich selbst verwenden.
Fügen Sie dies zu Ihrer ~/.ssh/config
Datei auf Ihrem lokalen Computer hinzu.
Host yourServer
HostName <IP, FQDN or DNS resolvable name>
IdentityFile ~/.ssh/<your keyfile>
RemoteCommand zsh -l
RequestTTY force
User <yourUsername>
Es könnte einen hackigen Weg geben, um das zu erreichen, wonach Sie suchen, wie unten.
WARNUNG Dies kommt ohne Garantie und sieht nicht "klug" aus, aber ich habe es geschafft, meine lokale Datei auf den Server zu stellen und sie mit dieser in der Anmeldeshell zu speichern.
Host someHost
HostName someIP
IdentityFile ~/.ssh/somekey.pem
RemoteCommand zsh -l -c 'sleep 1; source /tmp/somefile; zsh'
PermitLocalCommand yes
LocalCommand bash -c 'sftp %r@%h <<< "put /tmp/somefile /tmp/somefile"'
RequestTTY force
User someUser
Wie es funktioniert?
RemoteCommand
Definiert, was auf der Remote-Seite ausgeführt werden muss.
LocalCommand
Definiert, was lokal ausgeführt werden muss. Mit dieser Option wird Ihre lokale Datei auf den Remote-Server kopiert, um sie zu beziehen. Hier ist der Haken, es passiert erst nach "erfolgreicher" Verbindung zum Remote-Host.
Bedeutung:
- Ihre Verbindung zu Remote sollte offen und aktiv sein
- Ihre Remote-Shell hat die Datei noch nicht, daher muss sie warten, bis die Datei da ist, ergo
sleep
- Ihre lokale Verwendung
sftp
, um Ihre Datei auf einem Remote-Server abzulegen, der Remote-Server wird von sleep
Ihren Skripten aktiviert und gibt einen Quellcode aus.
Es ist super hackisch, ich würde gerne wissen, ob es auch einen besseren Weg gibt.
Update: Dies kann anstelle von "langer" Ruhezeit verwendet werden:
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'
/etc/shells
die Shell ausgewählt werden kann.