如果我在Windows中设置环境变量CVSROOT并给它一个类似cvsserver:/ home / cvs的值,那么
1)打开Windows CMD shell并执行“echo%CVSROOT%”,我得到“cvsserver:home / cvs”
2)打开Cygwin bash shell并执行“echo $ CVSROOT”,我得到“cvsserver:home / cvs”
3)从Linux,ssh到机器并做“echo $ CVSROOT”,我什么都没得到。
如果我希望ssh会话具有CVSROOT的值,我需要将其插入到.bashrc中。
是否可以执行某些操作以便ssh会话还从Windows继承环境变量?
编辑:
4)来自Linux,做
ssh machine "printenv CVSROOT"
在.bashrc中设置环境变量,我什么都没得到。在交互式提示符下,我得到变量值,但这种方式什么都没有。
答案 0 :(得分:2)
我在这里找到了一个很好的解决方案:http://www.smithii.com/node/44
它在注册表中查找系统变量,并在通过ssh打开的会话中设置变量。
然后,从ssh客户端调用小块脚本(连接到cygwin服务器时),如下所示: ssh $ WINDOWSUSER @ $ WINDOWSBUILDSERVER“source / etc / profile; echo $ CVSROOT”
答案 1 :(得分:1)
好的,我已经弄清楚了......
无论出于何种原因,bash shell不会继承系统上设置的CVSROOT变量。我需要把这一行
export CVSROOT=cvsserver:/home/cvs
到.bashrc和.bash_profile文件中。
.bashrc文件中需要该行,以便非交互式登录将获取CVSROOT变量。例如:
ssh machine "printenv CVSROOT"
需要.bashrc文件中的这一行,以便存在CVSROOT。
.bash_profile文件中需要该行,以便交互式登录将获取CVSROOT变量。例如:
ssh machine
printenv CVSROOT
答案 2 :(得分:1)
如果你在Windows机器上运行你的SSH服务(我假设你这样做),那就是通过Cygwin。
该服务似乎在启动时拍摄环境变量的快照,并且不会刷新它们。
重新启动服务就足够了。
答案 3 :(得分:0)
有一件事是Windows-> Cygwin另一件事是ssh
您是否尝试过明确地将Windows变量转发到Linux:
ssh -t user@host "export CVSROOT=%CVSROOT%;/bin/bash --login"
答案 4 :(得分:0)
重新启动计算机将解决此问题。环境变量更改不仅传播到所有正在运行的程序。
答案 5 :(得分:0)
我遇到了同样的问题。通过设置这样的变量来实现这一点:
ssh machine "export MYVARIABLE=1 && printenv MYVARIABLE"