Некоторые команды не найдены по ssh

Некоторые команды не найдены по ssh

У меня возникли проблемы с выполнением некоторых команд по SSH на локальном хосте. Я использую ZSH на 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

Не знаю, что тут не так, пробовал, ssh -tно результат тот же.

РЕДАКТИРОВАТЬ:

Спасибо за комментарии, на самом деле все по-другому. Почему?

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

решение1

Интерпретация переменных выполняется в командной строке перед запуском любого кода. Вы можете отправить переменную на сервер SSH, экранировав ее или заключив в одинарные кавычки, например

% 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

(Обратите внимание, что не все хосты на самом деле имеют $HOSTпеременную по умолчанию. BSD, например.)

Связанный контент