Linux 通过ssh在远程服务器上执行命令

Linux 通过ssh在远程服务器上执行命令,linux,shell,ssh,Linux,Shell,Ssh,我试图通过本地服务器上的ssh命令在远程linux服务器上执行命令,如下所示: ssh myremoteserver“type ttisql” 其中ttisql是远程计算机路径上的可执行文件 运行此操作的结果是: bash:行0:类型:ttisql:未找到 当我只是先连接并执行以下操作时: ssh myremoteserver 然后输入命令: [myuser@myremoteserver~]$:键入ttisql 正如我所期望的那样,我得到了ttisql exe的路径 奇怪的是,当我在beta环境

我试图通过本地服务器上的ssh命令在远程linux服务器上执行命令,如下所示:

ssh myremoteserver“type ttisql”

其中ttisql是远程计算机路径上的可执行文件

运行此操作的结果是:

bash:行0:类型:ttisql:未找到

当我只是先连接并执行以下操作时:

ssh myremoteserver

然后输入命令:

[myuser@myremoteserver~]$:键入ttisql

正如我所期望的那样,我得到了ttisql exe的路径

奇怪的是,当我在beta环境中执行第一个命令时,它会按预期工作并返回exe的路径。在测试版场景中,机器A连接到远程机器B,但两台机器都在现场,ssh命令可以快速连接到远程机器

在我们的生产环境中,当机器A是本地的,机器B是非现场的,ssh命令需要一两秒钟才能连接时,就会遇到这个问题

我能看到的唯一区别是生产ssh连接所需的时间。远程系统上的路径正确,因为如果在初始连接后输入该命令,则该命令有效


有人能帮我理解为什么这个简单的命令可以在一个环境中工作而不能在另一个环境中工作吗?问题是否与通过ssh连接所需的时间有关?

当shell是交互式的(=登录到服务器时)和非交互式的(使用
ssh运行命令时),您的
路径的设置不同

查看shell使用的rc文件,例如
.bashrc
.bash\u profile
.profile
(取决于您的系统)。如果在正确的位置设置了
PATH
,那么通过
ssh运行
ttisql
时,它就可以工作


另一种解决方案是使用
ttisql
的绝对路径,那么它将不依赖于
路径设置。

非交互式会话(
ssh命令
)中的环境可能与交互式会话(
ssh
,然后是
命令
)中的环境不同。在这两种情况下,请尝试
echo$PATH

ssh myremoteserver 'echo $PATH'
vs


如果它们不同,请在所有启动脚本中查找基于
$PS1
$-

更新.bashrc和.bash_配置文件的不同行为。谢谢谢谢你的回答。另一个困扰我的问题是
ssh remote echo$PATH
ssh remote'echo$PATH'
之间的差异。记号是关键。这太酷了@fenkerbb!顺便说一句,在您的示例中,常见的名称是单引号;-)
ssh myremoteserver
[myuser@myremoteserver~]$: echo $PATH