远程机器上的环境变量上的 ssh

远程机器上的环境变量上的 ssh

如何将环境变量导出到远程机器的特定用户。

我正在使用以下命令进行导出,但回显结果为空。

我想通过另一种方法来解决,即明确地将此变量移动到 .bashrc,但即使这种方法也失败了。

ssh -oStrictHostKeyChecking=no ubuntu@$ip -n "sudo -u  rahul -i  'export DEVOPS_TOOLS_DEST_ENV='"'devops'"'' echo $DEVOPS_TOOLS_DEST_ENV" 

我遵循的方法是明确写入 .bashrc

ssh -oStrictHostKeyChecking=no ubuntu@$ip -n "sudo -u  rahul -i 'echo -n 'DEVOPS_TOOLS_DEST_ENV=devops' >> .bashrc"

我在第二种方法中看到的一个缺点是我必须写下条件来检查环境是否设置。

我首先通过 ssh 进入 ubuntu 的原因是因为我正在编写脚本以供 Jenkins 执行。

答案1

我必须指出几件事,我想你已经意识到了,但尽管如此:

  1. 在第一行中,有一个单引号,我认为是多余的或放错了位置。
sudo -u rahul -i 'export DEVOPS_TOOLS_DEST_ENV='"'devops'"'' echo $DEVOPS_TOOLS_DEST_ENV
                                                           ^
  1. 多个命令的执行应该用;或操作符分隔,例如&&||

考虑到这些,我测试了以下命令并且它对我有用:

sudo -H -u rahul bash -c 'export DEVOPS_TOOLS_DEST_ENV=devops; echo $DEVOPS_TOOLS_DEST_ENV'

请注意,我通过指定 shell 更改了命令的执行方式:bash。我已将 HOME 变量设置为拉胡尔的主目录使用-H。我还删除了所有引号,并相应地分隔了命令。

希望这些能帮到你。干杯!

相关内容