.bash_profile não é originado durante o logon

1

Eu declarei um alias no arquivo .bashrc localizado em meu diretório pessoal. A exportação da variável de ambiente PS1 foi adicionada a este arquivo também.

# /etc/skel/.bashrc
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output.  So make sure this doesn't display
# anything or bad things will happen !


# Test for an interactive shell.  There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]] ; then
        # Shell is non-interactive.  Be done now!
        return
fi


# Put your fun stuff here.
alias ll='ls -l'
export PS1='\[3[01;32m\]\u@\h\[3[01;34m\] \W \$\[3[00m\] '

No entanto, essas alterações não têm efeito. Eu não tenho o alias declarado no arquivo após o logon. $PS1 também não é afetado. O script .bashrc do usuário AFAIK é originado pelo script .bash_profile localizado no diretório pessoal do usuário. Então, adicionei a seguinte linha ao meu .bash_profile para fins de teste:

echo hello > ~/test.txt

Aqui está o conteúdo completo do meu arquivo .bash_profile :

# /etc/skel/.bash_profile

# This file is sourced by bash for login shells.  The following line
# runs your .bashrc and is recommended by the bash info pages.
echo hello > ~/test.txt
[[ -f ~/.bashrc ]] && . ~/.bashrc

test.txt não aparece no meu diretório pessoal após o logon. Parece que o .bash_profile não é chamado durante o logon.

Como definir o sistema para levar em conta o usuário .bash_profile ?

    
por vect 25.07.2013 / 23:56

2 respostas

2

Obrigado, dsumsky , pela sua resposta.

De fato, .bashrc é definitivamente originado quando eu executo bash manualmente. Isso colocou em minha mente a pergunta "Qual shell está definido como shell de login para o meu usuário?". Foi /bin/sh . O problema desapareceu depois que eu o substituí com /bin/bash , apesar do fato de que% symlink /bin/sh é destinado a /bin/bash .

    
por 31.07.2013 / 21:46
3

Você poderia tentar executar o bash manualmente? Simplesmente

bash

para o shell interativo que usará o arquivo .bashrc e

bash -l

para o shell de login para testar os arquivos /etc/profile e ~/.bash_profile .

Além disso, você pode tentar rastrear chamadas do sistema do processo bash com o utilitário strace e verificar se os arquivos de configuração foram abertos pelo menos

strace -f -e open bash
strace -f -e open bash -l
    
por 26.07.2013 / 12:02