SSHでいくつかのコマンドが見つかりません

SSHでいくつかのコマンドが見つかりません

localhostでsshを介していくつかのコマンドを実行するのに問題があります。 Macではzshを使用しています。

% 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です。)

おすすめ記事