【问题标题】:What does bash do here in this ssh command?bash 在这个 ssh 命令中做了什么?
【发布时间】:2015-11-17 13:17:47
【问题描述】:
ssh -i host 'scripts/myScript start; bash'

在哪里 start 是 shell 脚本中的一个函数? 在这里将 bash 附加到脚本有什么作用? 一点背景: 它为我生成了一个交互式 shell 并执行 myScript,就像使用普通 ssh 实际登录主机一样。如果我省略了 bash。

ssh -i host 'scripts/myScript start;'

它不会导致交互式登录,而是非交互式 shell 登录,并且由于环境变量问题,我的 myScript 无法按预期工作。

【问题讨论】:

  • 你能写一个 MCVE 来演示你看到的行为吗?因为在末尾添加; bash不应该影响原始脚本的执行环境。 (此外,有关所涉及系统的一些详细信息——ssh 的版本、操作系统版本、远程登录 shell 等——可能会有所帮助。)

标签: linux bash shell ssh


【解决方案1】:

结尾的bash 将导致在命令scripts/myScript start 返回后在远程主机上启动bash 的交互式会话。

你还需要使用-t分配一个伪终端:

ssh -t host 'scripts/myScript start; bash'

【讨论】:

  • 如果我不使用 -t 选项会致命吗?因为即使没有 -t 它也可以达到我的目的,并且使用 -t 会在本地机器上给我一个提示,从那里我将这个命令发送给远程主机。那不是我想要的。另外,由于 bash 是在 myScript 之后发出的,那么 myScript 是如何以及为什么在交互环境中执行的?
  • @user3814996 您在使用-t 时看到的 bash 会话是在远程计算机上打开的,而不是在您的本地计算机上。如果没有-t,bash 会话可能会挂起,因为没有可连接的终端在本地..也 ssh 主机“命令”在非交互式(和非登录)bash 会话中运行 command....
猜你喜欢
  • 2012-03-25
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
  • 2018-04-19
  • 1970-01-01
相关资源
最近更新 更多