“ssh user@host echo $PATH”给了我本地路径而不是远程路径

res*_*es1 1 linux ssh

为什么命令

ssh user@host echo $PATH
Run Code Online (Sandbox Code Playgroud)

或者

ssh user@host -t echo $PATH
Run Code Online (Sandbox Code Playgroud)

返回本地机器上的路径而不是远程机器上的路径?

这意味着执行远程命令,如

ssh user@host command
Run Code Online (Sandbox Code Playgroud)

将在远程机器上搜索此命令,但使用本地机器上定义的路径,这是一个有点奇怪的行为还是我错了?

Kus*_*nda 6

命令

ssh user@host echo $PATH
Run Code Online (Sandbox Code Playgroud)

echo在远程主机上使用$PATH本地的任何值执行,因为该变量是在命令行上不加引号给出的。

要获取远程路径,请确保本地 shell 不扩展该变量:

ssh user@host 'echo $PATH'
Run Code Online (Sandbox Code Playgroud)

命令周围的单引号会阻止本地 shell 扩展$PATH