.bashrcé um script de shell que o Bash executa sempre que é iniciado interativamente. 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 as coisas de acordo com suas preferências. Uma coisa comum a ser inserida .bashrcsão os aliases que você deseja sempre estar disponíveis.
.bashrcé executado em todo lançamento de shell interativo. Se você diz:
$ bash ; bash ; bash
e depois bateu Ctrl-Dtrês vezes, .bashrcserá executado três vezes. Mas se você diz isso:
$ bash -c exit ; bash -c exit ; bash -c exit
então .bashrcnão será executado em tudo, desde que -cfaz a chamada Bash não-interativo. O mesmo acontece quando você executa um script de shell a partir de um arquivo.
Contraste .bash_profilee .profileque são executados apenas no início de um novo shell de login. ( bash -l) Você escolhe se um comando entra .bashrcvs, .bash_profiledependendo se você deseja que ele seja executado uma vez ou para cada início de shell interativo.
Como um contra-exemplo de alias, que prefiro incluir .bashrc, você deseja fazer PATHajustes .bash_profile, pois essas alterações geralmente não são idempotentes :
export PATH="$PATH:/some/addition"
Se você colocar isso em seu .bashrclugar, toda vez que você lançar um sub-shell interativo, ele :/some/additionserá anexado ao final do PATHnovo, criando um trabalho extra para o shell quando você digitar um comando incorretamente.
Você começa um novo shell bash interativo sempre que desembolsar devi com :sh, por exemplo.
Quibble menor: diferente da maioria dos outros shells, o bash não carrega automaticamente o arquivo de configuração por instância .bashrcquando é iniciado como um shell de login. Às vezes, isso pode levar a um comportamento inesperado . A solução usual é a origem .bashrcde .profileou em .bash_profilevez disso.
Ilmari Karonen
@IlmariKaronen Como .bashrcnão se destina a ser usado por outros shells, é melhor não obtê- lo .profile(que pode ser usado por outros não bashshells).
Chepner 14/05
@IlmariKaronen o que acontece (leia-se: como posso depurar o porquê) quando source ~/.bashrcou . ~/.bashrcou [[ -f ~/.bashrc ]] && source. ~/.bashrcou [ -f ~/.bashrc ] && source ~/.bashrcnão funcionam?
@ WarrenYoung eu gostaria, mas percebi que .bashrcé realmente de origem (usando o comando recomendado em superuser.com/a/183980/128768 ). O problema que enfrentamos é realmente o não fornecimento de https://github.com/junegunn/fzfatravés deste comando dentro .bashrc: source ~/.fzf.bash. Eu lancei um novo terminal, depois Ctrl+ Re recebo `__fzf_history__`bash: fzf: command not found. Eu .bashrcforneço manualmente e o mesmo atalho de tecla inicia o fzf conforme o esperado. Desculpas pelo barulho aqui.
Nikos Alexandris
20
O objetivo de um .bashrcarquivo é fornecer um local onde você possa configurar variáveis, funções e aliases, definir seu prompt (PS1) e definir outras configurações que você deseja usar sempre que abrir uma nova janela do terminal.
Funciona sendo executado sempre que você abre um novo terminal, janela ou painel.
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 cores para lsdependendo se você estiver usando linux ou OSX
-3. Função " md" para criar e cd em um diretório com um comando
-4. Encontre o ramo git atual se estiver em um repositório git e ...
-5. -9 Defina um prompt incrível do PS1, como em
-10. Prompt PS2 aprimorado
-11. Defina vi como o editor na linha de comandos
-12. Defina vi como o editor padrão
-13. execute meu .bash_aliasesarquivo se ele existir
-14. Execute meu script de conclusão da guia git (para controles remotos e ramificações), se existir.
-15. Execute o salto automático, se existir
-16. Permitir cd'ing sem digitar a parte do CD se a versão bash> = 4
-17 Execute um script de conclusão do bash se existir
-18. Use o TMUX se estiver presente
-19. Adicione rvm ao meu PATH
-20. Use rvm, se existir.
Eu o tornei portátil para que ele 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 facilita o uso de todo o arquivo imediatamente em uma nova máquina, sem problemas que afetam a abertura de uma nova janela do terminal.
Isso realmente não agrega valor adicional a uma pergunta antiga. Além disso, vejo que você é novo no Unix e Linux, tente não postar imagens de texto; em vez disso, é melhor usar a formatação do bloco de código e copiar do seu console. Isso permite que o texto seja pesquisado / copiado / etc. No caso do seu exemplo, não existem realmente comandos complicados ou qualquer coisa que seria bom pesquisar, mas uma boa prática para outras respostas.
Centimane 15/09/16
1
Não sei se entendi completamente sua referência a 'pergunta antiga'. Ela está na lista das principais perguntas e é relevante com visualizações de 60k. Eu pensei que o valor agregado vinha do formato, em oposição a um diálogo / conjectura como as respostas anteriores. mas o formato também foi editado. Lembrarei de seus comentários sobre o uso de blocos de código, obrigado.
Timothy LJ Stewart
2
Está no topo da lista de perguntas 'ativas' porque você postou uma resposta. A pergunta foi originalmente feita em 2014 e aceitou uma resposta. A resposta aceita indica o objetivo .bashrce distingue a diferença entre .bashrce .bash_profileque cobre o conteúdo da sua resposta. Não desanime, você faz um esforço honesto, mas tente se concentrar em responder perguntas com algum conteúdo não coberto por outras respostas.
Respostas:
.bashrc
é um script de shell que o Bash executa sempre que é iniciado interativamente. 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 as coisas de acordo com suas preferências. Uma coisa comum a ser inserida
.bashrc
são os aliases que você deseja sempre estar disponíveis..bashrc
é executado em todo lançamento de shell interativo. Se você diz:e depois bateu Ctrl-Dtrês vezes,
.bashrc
será executado três vezes. Mas se você diz isso:então
.bashrc
não será executado em tudo, desde que-c
faz a chamada Bash não-interativo. O mesmo acontece quando você executa um script de shell a partir de um arquivo.Contraste
.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 você deseja que ele seja executado uma vez ou para cada início de shell interativo.Como um contra-exemplo de alias, que prefiro incluir
.bashrc
, você deseja fazerPATH
ajustes.bash_profile
, pois essas alterações geralmente não são idempotentes :Se você colocar isso em seu
.bashrc
lugar, toda vez que você lançar um sub-shell interativo, ele:/some/addition
será anexado ao final doPATH
novo, criando um trabalho extra para o shell quando você digitar um comando incorretamente.Você começa um novo shell bash interativo sempre que desembolsar de
vi
com:sh
, por exemplo.fonte
.bashrc
quando é iniciado como um shell de login. Às vezes, isso pode levar a um comportamento inesperado . A solução usual é a origem.bashrc
de.profile
ou em.bash_profile
vez disso..bashrc
não se destina a ser usado por outros shells, é melhor não obtê- lo.profile
(que pode ser usado por outros nãobash
shells).source ~/.bashrc
ou. ~/.bashrc
ou[[ -f ~/.bashrc ]] && source. ~/.bashrc
ou[ -f ~/.bashrc ] && source ~/.bashrc
não funcionam?.bashrc
é realmente de origem (usando o comando recomendado em superuser.com/a/183980/128768 ). O problema que enfrentamos é realmente o não fornecimento dehttps://github.com/junegunn/fzf
através deste comando dentro.bashrc
:source ~/.fzf.bash
. Eu lancei um novo terminal, depoisCtrl
+R
e recebo`__fzf_history__`bash: fzf: command not found
. Eu.bashrc
forneço manualmente e o mesmo atalho de tecla inicia o fzf conforme o esperado. Desculpas pelo barulho aqui.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 você deseja usar sempre que abrir uma nova janela do terminal.Funciona sendo executado sempre que você abre um novo terminal, janela ou painel.
Você pode ver o meu aqui (foto com destaque da sintaxe) :
Explicação:
-1. Configure meu arquivo de histórico para ignorar duplicatas e ser muito maior que o padrão.
-2. Opção de cores para
ls
dependendo se você estiver usando linux ou OSX-3. Função "
md
" para criar e cd em um diretório com um comando-4. Encontre o ramo git atual se estiver em um repositório git e ...
-5. -9 Defina um prompt incrível do PS1, como em
-10. Prompt PS2 aprimorado
-11. Defina vi como o editor na linha de comandos
-12. Defina vi como o 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 ramificações), se existir.
-15. Execute o salto automático, se existir
-16. Permitir cd'ing sem digitar a parte do CD se a versão bash> = 4
-17 Execute um script de conclusão do bash se existir
-18. Use o TMUX se estiver presente
-19. Adicione rvm ao meu PATH
-20. Use rvm, se existir.
Eu o tornei portátil para que ele 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 facilita o uso de todo o arquivo imediatamente em uma nova máquina, sem problemas que afetam a abertura de uma nova janela do terminal.
fonte
É um
bash
arquivo de configuração.Shell interativos (sem login), a configuração é lida a partir desses arquivos:
$HOME/.bashrc
Para shells de Login, a configuração é lida a partir desses arquivos:
/etc/profile
(Sempre adquirido)$HOME/.bash_profile
(o restante desses arquivos é verificado em ordem até que um seja encontrado e nenhum outro é lido)$HOME/.bash_login
$HOME/.profile
Ilustração simples de como / quando eles são carregados está na imagem abaixo.
Eu adicionei um
echo
para o meu.bashrc
e.bash_profile
veja
man bash
para mais informaçãofonte
.bashrc
e distingue a diferença entre.bashrc
e.bash_profile
que cobre o conteúdo da sua resposta. Não desanime, você faz um esforço honesto, mas tente se concentrar em responder perguntas com algum conteúdo não coberto por outras respostas.