这个问题已经在这里有了答案:
已关闭8年。
在Mac OS X 10.8.2上运行
我正在通过SSH运行perl脚本,在perl脚本中我使用以下命令查询环境变量
$ ENV {MY_VAR_NAME},在本地运行时效果很好。但是,通过SSH,所有环境变量均未设置。
我也试着跑
system("source ~/.bash_profile");
在我的脚本开始无济于事。
有小费吗?
编辑:
重述我的问题。
我有机器A和B。
我在机器B上运行了perl,试图在B上获得环境变量,并且它起作用了。
然后我从A切换到B运行相同的脚本,即使用此代码
ssh user@B perl myscript.pl
这次,B上的环境变量全部为空白。
有小费吗?
更新:
我发现在机器B上运行了上面的脚本〜/ .bashrc,但是在〜/ .bashrc中设置了环境变量之后,再次运行上面的命令,但仍然看不到任何环境变量。
另外,如果我的perl脚本仅包含
echo $ENV{PATH}
然后我得到
/usr/bin:/bin:/usr/sbin:/sbin
最佳答案
使用ssh执行命令时将设置的环境变量取决于:
例如,启动时,
bash
可能会读取以下任何文件:~/.bash_profile
~/.profile
~/.bashrc
~/.bash_login
/etc/profile
取决于各种因素,例如 shell 是否被认为是“登录” shell , session 是否是“交互” session 等。
使用
ssh
时,您应该找出正在执行的启动文件。您可以通过将
echo here in XXXX
放入各个文件中并执行ssh命令来完成此操作。 (请注意,没有命令的ssh
可能会调用与带有命令的ssh
不同的启动文件。)对于
bash
,请参考其INVOCATION
页中的man
部分,以获取有关bash
启动时读取哪些文件的描述。关于perl - perl:通过SSH运行远程perl脚本,并在远程计算机上查询环境变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12809359/