SSH経由.bash_profileを含める

SSH経由.bash_profileを含める

次のスクリプトを作成しようとしています。

  1. copy.shサーバーにファイルをコピーする(これを実行するスクリプトはすでにあります)
  2. サーバーへのSSH接続
  3. コピーしたばかりのファイルがあるディレクトリに移動します。
  4. 走るmake
  5. 生成されたバイナリをmake別の場所にコピーします。

私のスクリプトは次のとおりです

#!/usr/bin/bash
BUILDSERV=me@server
BUILDDIR=/me/directory

#run my script that copies the files
./copy.sh

#TARGET is also a var in copy.sh so I make sure it's set properly here
TARGET=root@final_dest:/usr/bin/my_bin

ssh $BUILDSERV "cd $BUILDDIR && make && scp ./my_bin $TARGET"

問題は、私が実行したいプログラムがmake私のプログラムにないことですPATH。私のプログラム.bash_profileには対応する行がありますexport PATH=$PATH:/my/bin/が、sshに接続すると読み込まれないようですbash_profile

私のSSH呼び出しやスクリプトを変更して自分の内容を読む方法はありますか.bash_profile

ベストアンサー1

次は動作します。

ssh $BUILDSERV "source ~/.bash_profile && cd $BUILDDIR && make && scp ./my_bin $TARGET"

シェルsource組み込み機能は、同じシェルからファイルを読み取り、コマンドを実行します(単に別々のシェルを呼び出すスクリプトを呼び出すのとは対照的です)。

ログインシェルで呼び出されると、実行されたのとbashまったく同じ方法で実行されるため(存在する場合)、効果は同じです。.bash_profilesource

おすすめ記事