Linux SSH-从主机远程执行程序失败?
我需要在Ubuntu机器上运行这个命令: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
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你需要单引号,否则你会得到本地路径。