SSH - 从主机远程执行程序失败?

时间:2014-07-01 02:07:46

标签: linux ubuntu ssh

我需要从Ubuntu机器运行此命令:ssh user@hostip "which mvn"以显示Maven的可切换路径,但它没有显示任何内容

root@~: ssh user@hostip "which mvn"
root@~:

我在它显示的远程主机上检查命令which mvn

root@~: which mvn
/usr/share/mvn
root@~:

我尝试在执行ssh命令时获取.bashrc,但没有运气:

root@~: ssh user@hostip ". ~/.bashrc;which mvn"
root@~:

在./bashrc中也没有关于maven PATH configure

的内容

那么,我必须做什么?

1 个答案:

答案 0 :(得分:0)

root@~: ssh user@hostip "which mvn"

当您运行ssh并指定要在远程系统上调用的命令时,默认情况下ssh不会为远程会话分配PTY(伪TTY)。像bash这样的shell会检测到它们在没有TTY的情况下运行,这将改变shell进程初始化的方式。

在您的情况下,无论是将“/ usr / share”添加到远程PATH的命令,都可能没有针对非交互式会话(没有TTY的会话)运行。 您可以通过告诉ssh为远程会话请求TTY来解决此问题:

ssh -tt user@hostip "which mvn"

-t选项告诉ssh为远程会话请求TTY。这将导致远程shell实例为交互式会话初始化自身。有关-t选项的详细信息,请参阅ssh manual

如果这不能解决问题,则需要在远程服务器(.bash_profile,.bashrc等)上的shell配置文件中找到将/usr/share添加到PATH的位置,并确保为非交互式会话执行步骤。