2011-07-15 5 views
0

Si je mets l'environnement CVSROOT variable dans Windows et lui donne une valeur comme cvsserver:/home/cvs, si alorsCygwin hérite des variables d'environnement à partir de Windows parfois

1) open shell Windows CMD et faire « echo% CVSROOT % », je reçois "cvsserver: home/cvs"

2) shell bash Cygwin ouvert et faire "echo $ CVSROOT", je reçois "cvsserver: home/cvs"

3) de Linux, ssh à la machine et faire "echo $ CVSROOT", je n'ai rien.

Si je veux que la session ssh ait une valeur pour CVSROOT, j'ai besoin de l'insérer dans le fichier .bashrc.

Y a-t-il quelque chose qui peut être fait pour que la session ssh hérite aussi de la variable d'environnement de Windows?

modifier:

4) de Linux, faire

ssh machine "printenv CVSROOT" 

avec la variable d'environnement définie dans .bashrc, je reçois rien. À une invite interactive, j'obtiens la valeur de la variable, mais cette manière ne donne rien.

Répondre

1

OK, je l'ai pensé à elle ...

Pour une raison quelconque, le shell bash ne hérite pas la variable CVSROOT qui est mis sur le système. J'ai besoin de mettre cette ligne

export CVSROOT=cvsserver:/home/cvs 

dans les fichiers .bashrc et .bash_profile.

La ligne est nécessaire dans le fichier .bashrc afin que les connexions non interactives obtiennent la variable CVSROOT. Par exemple:

ssh machine "printenv CVSROOT" 

a besoin de cette ligne dans le fichier .bashrc de sorte que CVSROOT existe.

La ligne est nécessaire dans le fichier .bash_profile afin que les connexions interactives obtiennent la variable CVSROOT. Par exemple:

ssh machine 
printenv CVSROOT 
0

Une chose est Windows-> Cygwin autre chose est ssh

Avez-vous essayé transmettre votre variable Windows vers votre linux explicitement:

ssh -t [email protected] "export CVSROOT=%CVSROOT%;/bin/bash --login" 
0

redémarrant votre ordinateur résoudra ce problème. Les changements de variable d'environnement ne se propagent pas seulement à tous vos programmes en cours d'exécution.

1

Si vous avez votre service SSH fonctionnant sur une boîte de Windows (je suppose que vous le faites) et c'est via Cygwin.

Le service semble prendre un instantané des variables d'environnement lorsqu'il démarre et ne les actualise pas.

Redémarrer le service devrait être suffisant.

2

J'ai trouvé une bonne solution ici: http://www.smithii.com/node/44

Il cherche la variable système dans le registre et définit les variables de session ouverte via ssh.

Ensuite, appelez le petit morceau de script depuis votre client ssh (lors de la connexion à votre serveur Cygwin), comme ceci: ssh $ WINDOWSUSER @ $ WINDOWSBUILDSERVER "source/etc/profile echo $ CVSROOT"

+0

/etc/profile doit provenir automatiquement. Et aujourd'hui, beaucoup plus préféré de ne pas le changer à la place, il suffit de créer un nouveau fichier avec le script fourni et placez-le dans /etc/profile.d – Hubbitus

0

J'ai rencontré le même problème. Cela fonctionne en définissant la variable comme ceci:

ssh machine "export MYVARIABLE=1 && printenv MYVARIABLE" 
Questions connexes