Versão simplificada:
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Esta parte verifica se ~/.profile
está sendo originado por uma instância de Bash, e se esse for o caso, as fontes, por sua vez ~/.bashrc
; Essa é uma maneira de incluir as configurações do usuário armazenadas em ~/.bashrc
, por exemplo. também em shells de login, que normalmente não usam ~/.bashrc
;
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Esta parte verifica se ~/bin
existe e, se esse for o caso, adiciona antes ~/bin
ao valor atual de $PATH
; isso é feito para que os possíveis executáveis / scripts presentes em ~/bin
tenham precedência sobre executáveis / scripts presentes em outros caminhos incluídos em $PATH
(por exemplo, colocando um executável chamado cat
in ~/bin
, ao executar cat
executável seria executado no lugar do usual /bin/cat
).
Versão detalhada:
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Esta parte verifica se a expansão de $BASH_VERSION
tem um comprimento diferente de zero ( if [ -n "$BASH_VERSION" ]
), e se esse for o caso, se a expansão de $HOME/.bashrc
existir e for um arquivo regular ( if [ -f "$HOME/.bashrc" ]
), a expansão de $HOME/.bashrc
é originada.
Como o Bash define $BASH_VERSION
na invocação, verificar se $BASH_VERSION
tem um comprimento diferente de zero é uma maneira robusta de determinar se o próprio arquivo está sendo originado por uma instância Bash.
É por isso que ao invocar o Bash como um shell de login no Ubuntu, as configurações do usuário armazenadas em ~/.bashrc
estão incluídas (isso não é necessariamente o caso de outras distribuições); Bash em si só origina ~/.profile
quando invocado como uma shell de login, e esta é uma maneira de contornar isso;
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Esta parte verifica se a expansão de $HOME/bin
existe e se é um diretório ( if [ -d "$HOME/bin" ]
) e, se esse for o caso, anexa a expansão de $HOME/bin
ao valor atual de $PATH
( PATH="$HOME/bin:$PATH"
; $HOME
é normalmente configurado para o diretório pessoal do usuário).
Isso é feito para que possíveis executáveis / scripts presentes na expansão de $HOME/bin
tenham precedência sobre executáveis / scripts presentes em outros caminhos incluídos em $PATH
.