1

非対話型シェルでサーバーに接続するときにソースを取得する必要がある機能がありますが、適切な場所がないようです。

これができるようになりたいです

ssh user@remote.com 'my_function'

SSHリモートコマンドは、手動で実行した場合よりも少ない環境変数を取得するのはなぜですか? ~/.ssh/environmentファイルに変数 ( hi='hello'など)を入れると、これを実行できることがわかりました

ssh user@remote.com 'echo ${hi}'

それは私の「こんにちは」の価値観を反映し、私は少し幸せでした。ただし、~/.ssh/environmentファイルはそのようなファイルではないため、関数をファイルに入れることができません:)

さて、どこに置こうかな

function hi {
    echo 'this is a function'
}

非対話型シェル中に供給されるようにするには?

それから私はできる

ssh user@remote 'hi'

そして、 「これは関数です」と出力します

4

1 に答える 1

0

関数をシェルの rc ファイルに入れると、それはシェルに依存します。bash の場合は、次を参照してください。

https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html

最も簡単な解決策は、関数を自宅の別のファイルに配置し、関数を呼び出す前にそれをソースすることです。

ssh user@remote.com '. ~/.my_functions.sh; my_function'

これは、対話型セッションから呼び出すかどうかに関係なく機能するはずです。

于 2013-09-28T15:01:29.333 に答える