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:
$ bash ; bash ; bash
e depois bateu Ctrl-Dtrês vezes, .bashrc
será executado três vezes. Mas se você diz isso:
$ bash -c exit ; bash -c exit ; bash -c exit
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 fazer PATH
ajustes .bash_profile
, pois essas alterações geralmente não são idempotentes :
export PATH="$PATH:/some/addition"
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 do PATH
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 devi
com :sh
, por exemplo.
.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ão bash
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 de https://github.com/junegunn/fzf
através deste comando dentro .bashrc
: source ~/.fzf.bash
. Eu lancei um novo terminal, depois Ctrl
+ 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) :
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 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.
É 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ção
.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.