Einige Befehle wurden über SSH nicht gefunden

Einige Befehle wurden über SSH nicht gefunden

Ich habe Probleme, einige Befehle über SSH im lokalen Host auszuführen. Ich verwende Zsh auf dem Mac:

% echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/Library/TeX/texbin:/usr/local/munki:/opt/X11/bin:/opt/cisco/anyconnect/bin

% ssh localhost echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/Library/TeX/texbin:/usr/local/munki:/opt/X11/bin:/opt/cisco/anyconnect/bin

% which docker
/usr/local/bin/docker

% ssh localhost which docker
docker not found

Ich weiß nicht, was hier falsch sein könnte, habe es versucht, ssh -taber mit dem gleichen Ergebnis.

BEARBEITEN:

Danke für die Kommentare, es ist tatsächlich anders, warum ist das so?

% ssh localhost printenv PATH
/usr/bin:/bin:/usr/sbin:/sbin

Antwort1

Die Variableninterpretation erfolgt auf der Kommandozeile, bevor Code ausgeführt wird. Sie können die Variable an den SSH-Server senden, indem Sie sie maskieren oder in einfache Anführungszeichen setzen, z. B.

% echo $HOST
tabasco
% ssh mesquite echo $HOST
tabasco
% ssh mesquite "echo $HOST"
tabasco
% ssh mesquite 'echo $HOST'
mesquite
% ssh mesquite echo \$HOST
mesquite
% ssh mesquite "echo \$HOST"
mesquite
% ssh mesquite 'echo \$HOST'
$​HOST
% printenv HOST
tabasco
% ssh mesquite printenv HOST
mesquite

(Beachten Sie, dass nicht alle Hosts standardmäßig über eine $HOSTVariable verfügen. BSD beispielsweise.)

verwandte Informationen