Je ne sais pas comment vous pouvez mettre votre local .zshrc
sur un serveur distant (c'est-à-dire sans le stocker de manière permanente là-bas), cela fonctionne pour moi de changer mon shell de connexion sur le serveur distant.
Puisqu'il s'agit d'un compte partagé, je ne peux l'utiliser zsh
que pour moi avec cette méthode.
Ajoutez ceci à votre ~/.ssh/config
fichier sur votre machine locale.
Host yourServer
HostName <IP, FQDN or DNS resolvable name>
IdentityFile ~/.ssh/<your keyfile>
RemoteCommand zsh -l
RequestTTY force
User <yourUsername>
Il pourrait y avoir un moyen hackeux d'accomplir ce que vous recherchez, comme ci-dessous.
AVERTISSEMENT Ceci n'est livré avec aucune garantie et ne semble pas «sage», mais j'ai réussi à mettre mon fichier local sur le serveur et à le source dans le shell de connexion en utilisant cela.
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
Comment ça marche?
RemoteCommand
définit ce qui doit être exécuté sur le côté distant.
LocalCommand
définit ce qui doit être exécuté sur local, qui est utilisé pour copier votre fichier local sur un serveur distant pour le sourcer. Voici le hic, cela ne se produit qu'après une connexion «réussie» à l'hôte distant.
Sens:
- Votre connexion à la télécommande doit être ouverte et vivante
- Votre shell distant n'a pas encore le fichier, il doit donc attendre que le fichier soit là, ergo
sleep
- Vos utilisations locales
sftp
pour placer votre fichier sur un serveur distant, le serveur distant se réveille sleep
et source vos scripts.
C'est super hackish, j'aimerais savoir s'il y a une meilleure façon aussi.
Mise à jour: Cela peut être utilisé à la place d'un temps de sommeil «long»:
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'
/etc/shells
pour que le shell soit sélectionnable.