このコマンドを実行すると、リモート サーバーの HOME 変数が展開されると思います。
ssh user@host bash -c "'echo ${HOME}'"
代わりに、これはローカルで展開されます。
リモート HOME 変数を取得するにはどうすればよいですか?
目的がHOME
環境変数のリモート値を取得することだけであれば、簡単に実行できます。
ssh user@host printenv HOME
これは、リモート シェルまたはシステムにprintenv
ユーティリティがある限り機能します。
HOME
それは、二重引用符で囲まれた文字列であるため、変数がローカルに展開されています。
代わりに、次のいずれかを実行します
ssh user@host 'bash -c "echo \"\$HOME\""'
または
ssh user@host 'bash -c '"'"'echo "$HOME"'"'"
上記の最初のケースでは、リモート シェルはコマンドを取得します。
bash -c "echo \"\$HOME\""
実行します。
2番目に、それは取得します
bash -c 'echo "$HOME"'
ローカル シェルがzsh
または のbash
場合、 の%q
フォーマット指定子を使用しprintf
て、リモート シェル用に適切に引用符で囲まれた文字列を作成できます。
ssh user@host "$( printf '%q ' bash -c 'echo "$HOME"' )"
これは、複数行のコマンドでも機能します。
ssh user@host "$( printf '%q ' bash -c '
echo "home: $HOME"
echo "away: $AWAY"' )"
次も参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加