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

21

Não consigo encontrar informações claras sobre o que é o .bashrcarquivo 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, alias e histórico de shell, etc. Existe algo que não parece útil?

Justin
fonte
4
.bashrcé um dos muitos arquivos de configuração do bash. Consulte a documentação oficial sobre os arquivos de inicialização do Bash .
muru

Respostas:

21

O .bashrcarquivo é um script que é executado sempre que uma nova sessão do terminal é iniciada no modo interativo . É o que acontece quando você abre uma nova janela do terminal pressionando Ctrl+ Alt+ Tou simplesmente abre uma nova guia do terminal.

Por outro lado, uma sessão de terminal no modo de login solicitará o nome do usuário e a senha e executará o ~/.bash_profilescript. É o que ocorre, por exemplo, quando você faz logon em um sistema remoto através do SSH.

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

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

Luís de Sousa
fonte
O link está quebrado.
rab
1
O link está funcionando.
Luís de Sousa
Nessa página, o arquivo de download não está funcionando.
rab
1
O link e o download funcionam bem
M. Becerra
5

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

Na verdade, é bashespecificamente o que lê .bashrc(e /etc/bash.bashrc). Existem muitas conchas diferentes.

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

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

Quando o bash é iniciado de maneira não interativa, para executar um script de shell, por exemplo, ele procura a variável BASH_ENVno ambiente, expande seu valor se aparecer lá e usa o valor expandido como o nome de um arquivo para ler e executar. O Bash se comporta como se o seguinte comando tivesse sido executado:

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

mas o valor da PATHvariável não é usado para procurar o nome do arquivo.

O arquivo é apenas comandos de shell. É normalmente usado para alterar prompts, definir variáveis ​​de ambiente e definir procedimentos de shell. Tradicionalmente, o arquivo .profileé usado para esse fim, mas bashtem tantas extensões que precisa de seu próprio arquivo de inicialização para usuários que desejam colocar bashisms nos arquivos de inicialização.

" Não é um shell de login " significa coisas como o lançamento de scripts e, geralmente, janelas de terminal iniciadas por gerenciadores de janelas. Às vezes eu configuro sistemas * nix para ter .bashrce BASH_ENVapenas fonte .profile. Contanto que você não se desvie para fora dos comandos do shell POSIX, obterá a mesma inicialização em qualquer shell.

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

. .profile

Uma razão pela qual tudo é tão complexo é porque, às vezes, as pessoas colocam coisas que produzem saída nos arquivos de inicialização do shell ou definem avisos incondicionalmente. Isso causa muitos problemas ao executar programas de shell e comandos de backtick em idiomas, sem mencionar os system(3)programas em C. A maneira como a bashinicialização é projetada, eu acho, para ter um arquivo onde a saída e a configuração do prompt estão OK e um arquivo onde não está. Tradicionalmente, um teste em tempo de execução seria feito para distinguir a interatividade, por exemplo, verificando se o prompt está definido.

αғsнιη
fonte