O que é um arquivo .bashrc e o que ele faz?

17

Não consigo encontrar nenhuma informação clara sobre o que é o arquivo .bashrc e o que ele faz exatamente.

Obrigado por toda a ajuda até agora. Parece que esse script faz de tudo, desde coloração, conclusão, aliases e histórico de shell, etc. Existe algo que não parece útil?

    
por Justin 23.10.2014 / 20:08

2 respostas

17

O arquivo .bashrc é um script que é executado sempre que uma nova sessão de terminal é iniciada no modo interativo . Isto é o que acontece quando você abre uma nova janela de terminal pressionando Ctrl + Alt + T , ou simplesmente abre uma nova aba terminal.

Por contraste, uma sessão de terminal no login mode solicitará o nome de usuário e a senha e executará o script ~/.bash_profile . É o que ocorre, por exemplo, quando você faz logon em um sistema remoto por meio do SSH.

O arquivo .bashrc contém uma série de configurações para a sessão de terminal. Isso inclui configurar ou ativar: coloração, conclusão, histórico do shell, aliases de comando e muito mais. O arquivo .bashrc distribuído com o Ubuntu é bem comentado e você será capaz de entender a maior parte do que ele faz apenas lendo-o.

Você pode ajustar .bashrc ao seu gosto. Aqui você pode obter um exemplo com muitos recursos extras.

    
por Luís de Sousa 23.10.2014 / 20:30
5

Pergunta sobre superusuário - O que é o .bashrc arquivo? por @pineapple e respondido por @DigitalRoss

  

Na verdade, é bash especificamente que lê .bashrc (e   %código%). Existem muitas conchas diferentes.

     

A página do bash man (de Brian Fox e   Chet Ramey; também página de informações "Bash Startup   Arquivos ")   é a referência autoritativa:

     
    

Quando um shell interativo não é     um shell de login é iniciado, o bash lê     e executa comandos de /etc/bash.bashrc ,     se esse arquivo existir. Isso pode ser     inibido usando a opção ~/.bashrc .     A opção do arquivo --norc forçará     bash para ler e executar comandos de     arquivo em vez de --rcfile .

         

Quando o bash é iniciado     não interativamente, para executar um shell     script, por exemplo, procura o     variável ~/.bashrc no ambiente,     expande seu valor se aparecer lá,     e usa o valor expandido como o     nome de um arquivo para ler e executar.     Bash se comporta como se o seguinte     comando foram executados:

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi  
         

mas o valor da variável BASH_ENV não é usado para pesquisar     para o nome do arquivo.

  
     

O arquivo é apenas comandos shell. Normalmente é usado para mudar   solicita, define variáveis de ambiente e define procedimentos de shell.   Tradicionalmente, o arquivo PATH é usado para essa finalidade, mas    .profile tem tantas extensões que precisa de seu próprio arquivo de inicialização para   usuários que querem colocar bashisms   em arquivos de inicialização.

     

" Não é um shell de login " significa coisas como o lançamento de scripts e normalmente   janelas de terminal iniciadas pelos gerenciadores de janelas. Às vezes eu configuro * nix   os sistemas têm bash e .bashrc apenas origem BASH_ENV . Como   desde que você não se desvie para fora dos comandos shell POSIX, então você vai   obtenha a mesma inicialização em qualquer shell.

     

É particularmente valioso quando .profile é realmente sh , o que às vezes   acontece. Para fazer isso, use:

. .profile
     

Uma das razões pelas quais isso é tão complexo é porque às vezes as pessoas colocam   coisas que produzem saída em arquivos de inicialização do shell, ou   definir incondicionalmente prompts. Isso causa muitos problemas ao executar   programas de shell e comandos de backtick dentro de idiomas, para não mencionar    bash de programas em C. A maneira como o system(3) é iniciado é projetado,   acho que, para ter um arquivo onde a saída e configuração de prompt é OK e um   arquivo onde não é. Tradicionalmente, um teste em tempo de execução seria feito para   distinguir interatividade, por exemplo, verificando se o prompt   está definido.

    
por αғsнιη 23.10.2014 / 20:19

Tags