[ssh] ssh経由で他のサーバのスクリプトを実行するときに.bash_profileを読ませる方法
書きなぐりメモ。
ssh経由で何かのスクリプトを実行したい時は
$ ssh <hostname> "/usr/bin/perl /path/to/hoge.pl"
という感じで実行できるけど、~/.bash_profile
とかに書かれた環境変数を使って処理をするスクリプトだと、sshの非対話モードでは~/.bash_profile
を読んでくれないので、困ってしまう。
そんなときは
$ ssh <hostname> "source ~/.bash_profile; /usr/bin/perl /path/to/hoge.pl"
のように明示的に読ませれば良いらしい。
ちなみに
sshdの設定でPermitUserEnvironment=yes
を設定して、~/.ssh/environment
というファイルに環境変数を設定するやり方もあるようだけど、必ずしもssh経由で実行するものではなく、対象のサーバで直接実行したい場合もあるので、~/.bash_profile
と~/.ssh/environment
の両方に設定するのが冗長なので今回は上記のやり方にした。