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

Linux SSH-从主机远程执行程序失败?,linux,ubuntu,ssh,Linux,Ubuntu,Ssh,我需要在Ubuntu机器上运行这个命令:sshuser@hostip“which mvn”显示Maven的可执行路径,但不显示任何内容 root@~: ssh user@hostip "which mvn" root@~: 我检查命令在远程主机上显示哪个mvn: root@~: which mvn /usr/share/mvn root@~: 当执行ssh命令时,我尝试寻找.bashrc,但运气不佳: root@~: ssh user@hostip ". ~/.bashrc;which mv

我需要在Ubuntu机器上运行这个命令:
sshuser@hostip“which mvn”
显示Maven的可执行路径,但不显示任何内容

root@~: ssh user@hostip "which mvn"
root@~:
我检查命令
在远程主机上显示哪个mvn

root@~: which mvn
/usr/share/mvn
root@~:
当执行ssh命令时,我尝试寻找
.bashrc
,但运气不佳:

root@~: ssh user@hostip ". ~/.bashrc;which mvn"
root@~:
在./bashrc中,也没有关于maven路径配置的任何信息

那么,我该怎么办

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

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

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


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

ssh的输出是什么user@hostip“echo$PATH”,
哪个
命令在指定的文件夹中搜索可执行文件$PATH@Cody你需要单引号,否则你会得到本地路径。