Incluindo .bash_profile sobre ssh

3

Estou tentando escrever um script que:

  1. Copiar arquivos para um servidor (eu já tenho um script copy.sh que faz essa tarefa)
  2. ssh para esse servidor
  3. cd para o diretório onde os arquivos que acabei de copiar são
  4. executar make
  5. copie o binário resultante de make para outro local.

Meu script é assim:

#!/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"

O problema é que um programa que eu quero executar como parte de make não está no meu PATH . Meu .bash_profile tem uma linha export PATH=$PATH:/my/bin/ , mas parece que bash_profile não está sendo lido quando eu ssh in.

Existe uma maneira de alterar minha invocação ssh ou script em geral para fazer com que ela leia meu .bash_profile ?

    
por turbulencetoo 06.08.2014 / 18:29

1 resposta

4

Os seguintes itens devem funcionar:

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

O source shell embutido lê um arquivo e executa os comandos no mesmo shell (ao contrário de simplesmente chamar o script, que invoca um shell separado).

Quando invocado como shell de login, bash executa o .bash_profile , se existir, exatamente da mesma maneira que source , portanto, o efeito será o mesmo.

    
por 06.08.2014 / 19:50

Tags