我需要从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
的内容那么,我必须做什么?
答案 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的位置,并确保为非交互式会话执行步骤。