Version simplifiée :
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Cette partie vérifie si ~/.profile
est lui-même alimenté par une instance de Bash, et si c'est le cas, les sources à leur tour ~/.bashrc
; il s'agit d'un moyen d'inclure les paramètres de l'utilisateur stockés dans le fichier ~/.bashrc
par exemple, également dans les shells de connexion, qui n'ont normalement pas de source ~/.bashrc
;
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Cette partie vérifie si ~/bin
existe, et si c'est le cas, il ajoute en préambule ~/bin
à la valeur actuelle de $PATH
; ceci est fait pour que les éventuels exécutables / scripts présents dans les fichiers ~/bin
sont prioritaires sur les exécutables / scripts présents dans d'autres chemins d'accès inclus dans les $PATH
(par exemple en plaçant un exécutable nommé cat
en ~/bin
lors de l'exécution cat
cet exécutable serait exécuté à la place de l'habituel /bin/cat
).
Version détaillée :
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Cette partie vérifie si l'expansion de $BASH_VERSION
a une longueur non nulle ( if [ -n "$BASH_VERSION" ]
), et si c'est le cas, si l'expansion de $HOME/.bashrc
existe et est un fichier normal ( if [ -f "$HOME/.bashrc" ]
), l'expansion de $HOME/.bashrc
est d'origine.
Puisque les ensembles Bash $BASH_VERSION
lors de l'invocation, en vérifiant si $BASH_VERSION
a une longueur non-nulle est un moyen robuste de déterminer si le fichier lui-même est sourcé par une instance de Bash.
C'est pourquoi, lorsque l'on invoque Bash en tant que login Shell sur Ubuntu, les paramètres de l'utilisateur stockés dans le fichier ~/.bashrc
sont incluses (ce qui n'est pas nécessairement le cas pour d'autres distributions) ; Bash lui-même n'utilise que les sources ~/.profile
lorsqu'il est invoqué en tant que Shell de connexion, et ceci est un moyen de contourner ce problème ;
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Cette partie vérifie si l'expansion de $HOME/bin
existe et est un répertoire ( if [ -d "$HOME/bin" ]
), et si c'est le cas, il ajoute l'expansion de $HOME/bin
à la valeur actuelle de $PATH
( PATH="$HOME/bin:$PATH"
; $HOME
est normalement le répertoire personnel de l'utilisateur).
Cela permet d'éviter que d'éventuels exécutables / scripts présents dans l'extension de $HOME/bin
sont prioritaires sur les exécutables / scripts présents dans d'autres chemins d'accès inclus dans les $PATH
.