Si vous souhaitez simplement envoyer la PS1
variable et qu'elle ne contient pas de '
(guillemet simple), essayez:
ssh targethost -t "PS1='$PS1'; exec bash"
Le local .bashrc
pourrait bien écraser PS1
cependant (merci à Dennis Williamson de l' avoir signalé).
Il existe des moyens de transmettre des variables d'environnement via ssh , mais elles sont généralement désactivées dans la configuration du serveur. Si la PermitUserEnvironment
directive est activée dans la configuration du serveur et que chaque utilisateur a sa propre paire de clés (oui, vous pourriez ne pas être aussi chanceux), vous pouvez ajouter environment="PS1=…"
à la ligne en ~/.ssh/authorized_keys
correspondant à votre clé.
Si vous souhaitez conserver votre propre configuration sur un compte d'utilisateur partagé, vous pouvez créer votre propre répertoire de fichiers de configuration et définir la HOME
variable d'environnement pour pointer vers ce répertoire.
ssh targethost mkdir mrstatic.home
scp .bashrc targethost:mrstatic.home/
Créez des liens symboliques dans le mrstatic.home
répertoire pointant vers l'entrée correspondante dans le répertoire parent lorsque vous souhaitez partager un fichier avec les autres utilisateurs.
Connectez-vous ensuite avec
ssh targethost -t 'HOME=~/mrstatic.home; exec bash'`
Si vous souhaitez modifier la télécommande .profile
(ou un autre fichier d'initialisation), vous pouvez probablement automatiser vos paramètres. De nombreux sites autorisent LC_*
les variables d'environnement (normalement, elles sont utilisées pour les paramètres régionaux). Si ces deux conditions sont remplies, vous pouvez définir une variable qui n'est pas réellement utilisée pour les paramètres régionaux, par exempleLC_USER
, côté client, et la tester sur le serveur .profile
.
(Bien sûr, les comptes partagés sont une mauvaise idée, mais je me rends compte que vous n'êtes peut-être pas en mesure de changer cette situation.)
"PS1='$PS1' bash -i"
(et pourquoi pasexec
aussi)?PS1
d'être écrasé lors du démarrage du shell. Aucun exécutable: lors des tests sur mon système, cela ne semblait pas faire de différence - pas de processus supplémentaire..bashrc
est susceptible d'écraserPS1
.Placez votre invite PS1 dans ~ / .ssh / environnement et la session ssh la transmettra à chaque hôte auquel vous vous connectez. Cela fonctionne pour moi avec openssh 4.3p2.
la source
PermitUserEnvironment
, ce qui est désactivé par défaut.vous pouvez spécifier des variables d'environnement côté client et si le serveur ssh le permet (vérifiez man sshd-config), ces variables sont copiées dans la session lorsque vous vous connectez à la machine.
ainsi, vous devez configurer le .bashrc sur le serveur pour vérifier une PS1 existante (ou n'importe quelle variable) et ne définir PS1 que si elle n'est pas déjà définie.
ou, ce qui simplifie les choses, vous regroupez vos paramètres dans une fonction .. et déployez cette fonction soit en tant que fichier spécial de votre source à la demande (
source joes_bashrc
) ou directement dans le .bashrc. avoir son propre fichier semble un peu plus robuste. les autres personnes peuvent utiliser vos paramètres mais ne sont pas obligées de le faire.la source
Ne partagez pas les connexions. SSH comme vous-même, puis faites
sudo -su shareduser
(-s
signifie «shell»).Faites
sudo
garder votre répertoire personnel:la source
Si vous voulez le faire sans avoir besoin d'un scp supplémentaire, vous pouvez faire quelque chose comme ceci:
ssh -t srvname ' cp ~/.bashrc ~/.bashrc.n &>/dev/null ; echo "LS_COLORS=\"no=00:fi=00:ETC:ETC:ETC\";" >> ~/.bashrc.n ; echo "export LS_COLORS" >> ~/.bashrc.n ; echo "alias ls=\"ls --color=auto\";" >> ~/.bashrc.n ; exec bash --rcfile ~/.bashrc.n'
Cela générera un .bashrc.n basé sur le serveur bashrc mais avec vos remplacements.
la source
Si vous êtes prêt à s'immiscer dans imperceptiblement sur vos collègues, et vous pouvez leur faire confiance de ne pas interférer avec votre préférence, alors je suggère une combinaison de la réponse de cyrus , la réponse de akira et la réponse de Dennis Williamson .
~/.bashrc
et ajoutez à la fin. Bien que vos collègues «n'apprécieraient pas que vous écriviez sur le profil de base», ils n'en seront pas conscients à moins qu'ils ne le recherchent.Je pense que cela est assez clair, mais: la
ssh
commande entraîne laUnf
définition de la variable sur le serveur distant lorsque vous vous y connectez. Cela invoquera votre code dans la télécommande.bashrc
, ce qui mettra en vigueur vos personnalisations. Puisque vous placez votre code à la fin de.bashrc
, il remplacera les paramètres généraux plus tôt dans le fichier.Divulgation: je n'ai pas testé cela.
la source
La façon la plus simple est à mon humble avis:
la source
PROMPT_COMMAND
(qui s'exécute chaque fois que le shell émet une invite) semble être un moyen très difficile de résoudre ce problème. Et, comme il est quelque peu mystérieux, toute réponse suggérant qu'il devrait vraiment avoir une explication de son fonctionnement.Vous pouvez faire des choses comme monter votre maison sur sshfs / nfs, mais la solution la plus simple est de scp votre bashrc sur la nouvelle machine. Cela apporte également des alias et des trucs.
la source