Encontrei o .bashrc
arquivo e quero saber a finalidade/função dele. Além disso, como e quando é usado?
Responder1
.bashrc
é uma festançascript de shellque o Bash é executado sempre que é iniciado interativamente. Ele inicializa uma sessão de shell interativa. Você pode colocar qualquer comando nesse arquivo que possa digitar no prompt de comando.
Você coloca comandos aqui para configurar o shell para uso em seu ambiente específico ou para personalizar coisas de acordo com suas preferências. Uma coisa comum de colocar .bashrc
éapelidoque você deseja estar sempre disponível.
.bashrc
corre emtodolançamento de shell interativo. Se você diz:
$ bash ; bash ; bash
e depois bater Ctrl-Dtrês vezes, .bashrc
vai correr três vezes. Mas se você disser isso em vez disso:
$ bash -c exit ; bash -c exit ; bash -c exit
então .bashrc
não será executado, pois -c
torna a chamada Bash não interativa. O mesmo acontece quando você executa um script de shell a partir de um arquivo.
Contrast .bash_profile
e .profile
que são executados apenas no início de um novo shell de login. ( bash -l
) Você escolhe se um comando entra .bashrc
vs .bash_profile
dependendo se deseja que ele seja executado uma vez ou a cada início do shell interativo.
Como contra-exemplo para aliases, que prefiro colocar .bashrc
, você deseja fazer PATH
ajustes .bash_profile
, já que essas alterações normalmente não sãoidempotente:
export PATH="$PATH:/some/addition"
Se você colocar isso .bashrc
em vez disso, toda vez que você iniciar um sub-shell interativo, :/some/addition
ele será pregado no final do PATH
novo, criando trabalho extra para o shell quando você digitar um comando incorretamente.
Você obtém um novo shell Bash interativo sempre quecasca devi
com :sh
, por exemplo.
Responder2
O objetivo de um .bashrc
arquivo é fornecer um local onde você possa configurar variáveis, funções e aliases, definir seu prompt (PS1) e definir outras configurações que deseja usar sempre que abrir uma nova janela de terminal.
Ele funciona sendo executado sempre que você abre um novo terminal, janela ou painel.
Um super mínimo pode ter o seguinte:
export CLICOLOR=1
export LANG="en_US.UTF-8"
alias cp="cp -i"
alias ls="ls --color=auto"
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
export EDITOR="vim"
Isso é tudo que você realmente sabe para começar
Aqui está a versão "exagerada", útil para desenvolvedores experientes:
Um desenvolvedor experiente geralmente terá muito mais.
Você pode ver o meu aqui(foto com destaque de sintaxe):
HISTCONTROL=ignoreboth:erasedups HISTSIZE=100000 HISTFILESIZE=200000
ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }
git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; }
HOST='\033[02;36m\]\h'; HOST=' '$HOST
TIME='\033[01;31m\]\t \033[01;32m\]'
LOCATION=' \033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH
PS2='\[\033[01;36m\]>'
set -o vi # vi at command line
export EDITOR=vim
test -f ~/.bash_aliases && . $_
test -f ~/.git-completion.bash && . $_
test -s ~/.autojump/etc/profile.d/autojump && . $_
[ ${BASH_VERSINFO[0]} -ge 4 ] && shopt -s autocd
[ -f /etc/bash_completion ] && ! shopt -oq posix && . /etc/bash_completion
[ -z $TMUX ] && export TERM=xterm-256color && exec tmux
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$home/.rvm/scripts/rvm"
Explicação:
-1. Configure meu arquivo de histórico para ignorar duplicatas e ser muito maior que o padrão.
-2. Opção de cor ls
dependendo se você está usando Linux ou OSX
-3. Função " md
" para criar e cd em um diretório com um comando
-4. Encontre o branch git atual se estiver em um repositório git e...
-5. -9. Defina um prompt PS1 incrível, como em
-10. Prompt PS2 aprimorado
-11. Defina vi como editor na linha de comando
-12. Defina vi como editor padrão
-13. execute meu .bash_aliases
arquivo se ele existir
-14. Execute meu script de conclusão da guia git (para controles remotos e filiais), se existir.
-15. Execute o salto automático se existir
-16. Permitir fazer cd sem digitar a parte do cd se a versão do bash >= 4
-17. Execute um script de conclusão bash se existir
-18. Use TMUX se estiver presente
-19. Adicione rvm ao meu PATH
-20. Use rvm se existir.
Tornei-o portátil para que funcione em qualquer uma das minhas máquinas Linux ou OSX sem personalização - portanto, vários testes de presença são feitos antes de usar determinadas funções e outros scripts.
Isso também torna mais fácil usar o arquivo inteiro imediatamente em uma nova máquina, sem problemas que afetem a abertura de uma nova janela de terminal.
LEMBRETE - se você alterar seu .bashrc, certifique-se de iniciar uma nova janela de terminal para garantir que funcione ANTES de reiniciar (prática recomendada - faça isso imediatamente após a alteração). Se você bagunçar seu .bashrc e reiniciar, VOCÊ NÃO PODERÁ ENTRAR! Pessoalmente, também crio um segundo usuário 'admin' em máquinas pessoais para que, em tal emergência (login quebrado), eu possa fazer login nele e usar o sudo para corrigir meu outro arquivo .bashrc de login.
Responder3
É um bash
arquivo de configuração.
Shells interativos (sem login), então a configuração é lida a partir destes arquivos:
$HOME/.bashrc
Para shells de login, a configuração é lida nestes arquivos:
/etc/profile
(Sempre de origem)$HOME/.bash_profile
(o restante desses arquivos é verificado em ordem até que um seja encontrado e nenhum outro seja lido)$HOME/.bash_login
$HOME/.profile
Uma ilustração simples de como/quando eles são carregados está na imagem abaixo.
Eu adicionei um echo
ao meu .bashrc
e.bash_profile
veja man bash
para mais informações