(プロンプト文字を #
としています)
ssh は引数にコマンドを与えることができます。
# ssh example.net echo hoge
hoge
次のように書くとローカル側で環境変数が展開されて ssh に渡ります。
# ssh are@example.net echo "$HOME"
/home/ore
次のように書くと ssh には $HOME
という文字が渡されます。が、ssh はシェル経由でコマンドを実行するのでリモート側で環境変数が展開されます。
# ssh are@example.net echo '$HOME'
/home/are
なのでこんなふうに書くとローカルとリモートで2回環境変数が展開されます。
# HOGE='$HOME'
# echo $HOGE
$HOGE
# ssh are@example.net echo "$HOGE"
/home/are
なので $HOME
という文字をリモートで実行されるコマンドに渡したければ次のように書く必要があります。
# ssh are@example.net echo '\$HOME'
$HOME
あるいは次のように書きます。
# ssh are@example.net echo "'"'$HOME'"'"
$HOME
次のようにコマンド全体を1つの引数として ssh に渡しても同じです。
# ssh are@example.net 'echo \$HOME'
$HOME
# ssh are@example.net "echo '"'$HOME'"'"
$HOME