gpt4 book ai didi

perl:通过 SSH 运行远程 perl 脚本并查询远程机器上的环境变量

转载 作者:行者123 更新时间:2023-12-02 14:39:44 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
Why does an SSH remote command get fewer environment variables then when run manually?



在 Mac OS X 10.8.2 上运行

我正在通过 SSH 运行 perl 脚本,在 perl 脚本中我使用查询环境变量
$ENV{MY_VAR_NAME} 并且在本地运行时工作正常。但是通过 SSH,所有环境变量都变得未设置。

我也试着跑
system("source ~/.bash_profile");

在我的脚本开头无济于事。

有小费吗?

编辑:

改写我的问题。

我有机器A和B。
我在机器 B 上运行我的 perl,试图在 B 上获取环境变量并且它起作用了。
然后我从 A SSH 到 B 运行相同的脚本,即使用此代码
ssh user@B perl myscript.pl

这次B上的环境变量都是空白的。

有小费吗?

更新:

我发现运行上面的脚本,机器B上的~/.bashrc被调用了,但是在~/.bashrc中设置了环境变量后,再次运行上面的命令,还是没有看到任何环境变量。

另外,如果我的 perl 脚本只包含
echo $ENV{PATH}

然后我得到
/usr/bin:/bin:/usr/sbin:/sbin

最佳答案

使用 ssh 执行命令时设置的环境变量取决于:

  • 登录外壳
  • 该 shell 的启动文件的内容

  • 例如,当它启动时 bash可以读取以下任何文件:
  • ~/.bash_profile
  • ~/.profile
  • ~/.bashrc
  • ~/.bash_login
  • /etc/profile

  • 取决于诸如外壳是否被视为“登录”外壳、 session 是否为“交互式” session 等因素。

    当你使用 ssh 时,你应该找出正在执行的启动文件。 .

    您只需输入 echo here in XXXX 即可。在各个文件中,然后执行 ssh 命令。 (注意 ssh 没有命令可能会调用与 ssh 不同的启动文件。)

    对于 bash ,请参阅 INVOCATION 部分在其 man bash 时读取哪些文件的描述页面启动。

    关于perl:通过 SSH 运行远程 perl 脚本并查询远程机器上的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12809359/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com