Questão Qual é o .bashrc arquivo?


Unix shells ao começar a ler o .bashrc arquivo e executar comandos escritos nele. O que é esse arquivo e o que ele executa?


90


origem


Tente abrir o arquivo em um editor de texto - está em texto simples. - Will Bickford


Respostas:


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

o bash man page (por Brian Fox e Chet Ramey; também página de informação "Bash Startup Files") é a referência autoritativa:

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 o --norc opção.   o --rcfile opção de arquivo irá forçar   bash para ler e executar comandos de   arquivo em vez de ~/.bashrc.

Quando o bash é iniciado   não interativamente, para executar um shell   script, por exemplo, procura o   variável BASH_ENV 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 do PATH variável não é usada para pesquisar   para o nome do arquivo.

O arquivo é apenas comandos do shell. É normalmente usado para alterar prompts, definir variáveis ​​de ambiente e definir procedimentos de shell. Tradicionalmente, o arquivo .profile é usado para este propósito, mas bash 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 geralmente janelas de terminal iniciadas por gerenciadores de janelas. Às vezes eu configuro sistemas * nix para ter .bashrc e BASH_ENV apenas fonte .profile. Contanto que você não se desvie dos comandos shell do POSIX, você terá a mesma inicialização em qualquer shell.

É particularmente valioso quando sh é realmente bash, 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 definem prompts incondicionalmente. Isso causa muitos problemas ao executar programas shell e comandos backtick em idiomas, sem mencionar system(3) de programas em C. O caminho bash start up é projetado, eu acho, para ter um arquivo onde 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 a interatividade, por exemplo, verificando se o prompt está definido.


60



Boa resposta. Apenas algumas citações: O arquivo é apenas comandos shell. É normalmente usado para alterar prompts, definir variáveis ​​de ambiente e definir procedimentos de shell. - smwikipedia
Alguém sabe o que a parte rc de .bashrc / .zshrc significa? - WORMSS
@ WORMSS: Boa pergunta! Você não é o único a se perguntar sobre isso. - Caleb Xu


Quando o Bash inicia, ele executa os comandos em vários scripts diferentes.

Quando o Bash é invocado como um shell de login interativo, primeiro lê e executa comandos do arquivo / etc / profile, se esse arquivo existir. Depois de ler esse arquivo, ele procura por ~ / .bash_profile, ~ / .bash_login e ~ / .profile, nessa ordem, e lê e executa os comandos do primeiro que existe e é legível.

Quando um shell de login é encerrado, o Bash lê e executa comandos do arquivo ~ / .bash_logout, se existir.

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 opção --norc. A opção do arquivo --rcfile forçará o Bash a ler e executar comandos do arquivo em vez de ~ / .bashrc.

http://en.wikipedia.org/wiki/Bash_(Unix_shell)

Aqui estão alguns truques e dicas:

http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html

Vamos tentar definir o prompt para que ele possa exibir a data e o nome do host de hoje:

PS1="\d \h $ "

12



Porque é .profile depois de .bash_profile? Alguma lógica? - Pacerier


Ele deve conter vários comandos de "inicialização" para o seu shell, por exemplo:

  • Criando aliases úteis (por exemplo alias ll='ls -l').
  • Adicionando mais diretórios ao PATH.
  • Definindo novas variáveis ​​de ambiente.

9



O que é uso de alias? - pineapple
@pineapple: Um alias é uma maneira de executar um comando, que pode ser longo, com um comando mais curto. Por exemplo, o alias ll='ls -l' deixa você digitar ll para executar o ls -l comando. - Wuffers