web-dev-qa-db-fra.com

Est-il possible de spécifier un autre fichier zshrc lors de la connexion via ssh?

Je passe toute la journée à travailler sur des serveurs pour le travail et l’utilisateur distant en est un qui est partagé par moi-même et plusieurs collègues. Par conséquent, je ne peux pas personnaliser aveuglément le shell car tout le monde ne voudra pas de mes modifications et ajustements.

Est-ce un moyen de spécifier un autre fichier .zshrc à utiliser lors de la connexion, par exemple:

ssh user@someserver zsh --rcfile .zshrc.mine

J'ai examiné les pages de manuel et googlé et jusqu'à présent, je n'ai pas trouvé de solution.

Toute aide serait appréciée :-)

3
Tim Lassie Freeborn

Afin de changer où zsh cherche ses fichiers de configuration utilisateur (.zshenv, .zprofile, .zshrc, .zlogin), vous devez définir le ZDOTDIR variable d’environnement vers le chemin où ils résident. ZDOTDIR peut contenir un chemin absolu ou relatif, les chemins relatifs étant relatifs au répertoire de travail actuel lors du démarrage de zsh. Si ZDOTDIR n'est pas défini, zsh cherche dans $HOME.

Donc, si vous mettez votre .zshrc personnel dans le répertoire $HOME/.my_zsh, vous devriez pouvoir l'utiliser sur le serveur distant en vous connectant à l'aide de la commande suivante:

ssh -t user@someserver ZDOTDIR=.my_zsh zsh

Le paramètre -t force l’attribution de pseudo-tty, ce que ssh ne fait habituellement que si aucune commande n’est transmise (c’est-à-dire si un shell distant est ouvert). Dans ce cas, la commande ZDOTDIR=.my_zsh zsh est transmise, ce qui définit ZDOTDIR (uniquement pour la commande en cours) et exécute zsh.

3
Adaephon

Votre session .ssh a 3 variables d'environnement définies:

  SSH_CLIENT=127.0.0.1 42421 22  
  SSH_CONNECTION=127.0.0.1 42421 127.0.0.1 22  
  SSH_TTY=/dev/pts/3  

Vos valeurs après le "=" peuvent différer.

Vous pourriez avoir votre fichier .zshrc vérifier pour eux, et faire quelque chose de différent.

0
waltinator