Por que meu arquivo .bashrc não está sendo lido de .profile

0

no meu arquivo .profile eu tenho a linha:

# source bashrc if it exists
if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

para garantir que meu arquivo .bashrc seja originado, se existir. Eu também tenho um script de configuração que eu executo em novas máquinas para configurar meu ambiente que, por algum motivo, está se comportando de maneira diferente.

No final do script de configuração, tenho:

# read .profile
source "$USERDIR/.profile"

Onde $USERDIR aponta para meu diretório pessoal. Eu sei que .profile é apropriadamente originado quando este script é executado porque eu echo ".profile originado", e isso é impresso quando o script é concluído.

No entanto, o .bashrc não é lido de .profile (quando .profile é originado deste arquivo de configuração). Eu não consigo entender porque, apenas digitar source .profile de bash funciona como deveria.

Eu sei .bashrc não é executado porque a linha de eco no meu arquivo rc ecoa só quando eu origem .profile directamente e não a partir desta configurar script. O script .bashrc existe quando tento fonte ele (para que o if [ -f ~/.bashrc ] deve ser executado), porque ele é criado ao mesmo tempo .profile é.

    
por Startec 02.12.2016 / 02:11

2 respostas

1

Um passo de cada vez. Adicione isto a .profile

# source bashrc if it exists
if [ -f ~/.bashrc ]; then
    echo ".profile is sourcing " ~/.bashrc
    source ~/.bashrc
fi

e depois chamar o bash como login: bash -l deve ser suficiente.

A linha: .profile is sourcing /home/user/.bashrc é impressa?

Em caso afirmativo, o problema pode estar em:

  • existe algum desses arquivos: ~ / .bash_profile, ~ / .bash_login
  • o bash está sendo chamado com a opção --noprofile ?
  • ou com seu script de configuração.

Se isso não acontecer, o problema é com .profile e ou .bashrc .

  • talvez você deva usar $ HOME em vez de ~ para o diretório do usuário.
  • talvez seu bashrc tenha uma linha para impedir a execução quando não for interativa:

    # If not running interactively, don't do anything
    [ -z "$PS1" ] && return
    
por 02.12.2016 / 02:41
0

Where $USERDIR points to my home directory.

E onde exatamente $HOME ponto? No bash, ~ sempre se expande para onde $HOME pontos. Se você não pode source ~/.profile porque $HOME não está configurado corretamente, então seu $USERDIR/.profile não será capaz de source ~/.bashrc .

    
por 02.12.2016 / 02:14