Recarregar .bashrc após configurar variáveis - script de shell

1

Eu tenho um script simples que configura um repositório CVS (e outras coisas) para o trabalho. O script tem uma função que deve configurar o repositório, mas não recarrega corretamente .bashrc. O código é o seguinte:

#!/bin/sh
setupCVS()
{
   echo '#Environment variables' >> ~/.bashrc
   echo 'export CVSROOT=:<server path>' >> ~/.bashrc
   source ~/.bashrc
   cvs login
   cvs co <directories>
}

<other code>
setupCVS

Isso permitirá que o usuário execute o script e seja capaz de fazer login no cvs e fazer o download do código. O problema é que o script não usa o recurso .bashrc. Eu tentei usar

exec bash

e

. ~/.bashrc

mas ainda recebo uma mensagem de terminal dizendo que o CVSRoot não está definido quando atinge

cvs login

Alguma ideia? Estou usando o Ubuntu 14.04 se isso for necessário.

    
por Blake Ordway 08.06.2016 / 21:45

1 resposta

5

Algumas coisas:

  • O .bashrc padrão não faz nada se o shell não for interativo:

    # If not running interactively, don't do anything
    case $- in
        *i*) ;;
          *) return;;
    esac
    
  • Seu script está usando /bin/sh . Não forneça .bashrc . Qualquer coisa específica do bash pode causar problemas. E, como observa a steeldriver, /bin/sh não tem source :

    $ sh -c 'source ~/.bashrc'
    sh: 1: source: not found
    

Por que não apenas export da variável, além de adicionar a .bashrc ?

    
por muru 08.06.2016 / 21:51