Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Nota : Contributeurs, les sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
Bash possède comme la plupart des logiciels des fichiers de configuration globaux à tout le système, rangés dans /etc
et des fichiers personnels, fichiers cachés2) rangés dans le répertoire utilisateur (« ~
»).
Les scripts concernant tous les utilisateurs du système sont les suivants :
Les fichiers de configuration personnels sont les suivants
.bash_profile
ou .bash_login
ou .profile
.bashrc
.bash_logout
.bash_history
Au lancement d'un shell de login (par exemple via ssh ou dans un tty), bash interprète le fichier /etc/profile
s'il existe, puis le fichier ~/.bash_profile
.
S'il ne trouve pas ce dernier, il essaye d'interpréter le fichier ~/.bash_login
, et à défaut tente le fichier ~/.profile
.
Il est possible de simuler un shell de login en tapant
bash -l
Au lancement d'un shell non-interactif, c'est le fichier /etc/bash.bashrc
qui est lu, suivi de ~/.bashrc
.
Les chemins contenant les exécutables sont déclarés dans la variable d'environnement PATH via le fichier /etc/profile
Voici l'extrait du /etc/profile
définissant les PATH :
if [ "`id -u`" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" else PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" fi export PATH
Ici 4 chemins sont indiqués, séparés par le caractère “:
”.
Vous pouvez les utiliser ainsi :
Le fichier /etc/profile
vérifie ensuite d'il s'agit d'un shell bash interractif. Si c'est le cas, il charge les options globales spécifiques à bash (contenues dans /etc/bash.bashrc
).
if [ "$PS1" ]; then if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then if [ -f /etc/bash.bashrc ]; then . /etc/bash.bashrc fi else if [ "`id -u`" -eq 0 ]; then PS1='# ' else PS1='$ ' fi fi fi
Dans le cas contraire, il définit les prompts minimaux pour root et pour les utilisateurs.
Enfin, /etc/profile
charge les fichiers de configuration externes (potentiellement installés par l'utilisateur ou par d'autres paquets Debian), situés dans /etc/profile.d/
:
# The default umask is now handled by pam_umask. # See pam_umask(8) and /etc/login.defs. if [ -d /etc/profile.d ]; then for i in /etc/profile.d/*.sh; do if [ -r $i ]; then . $i fi done unset i fi
Ces scripts ne concernent que l'utilisateur dans le dossier personnel duquel ils se trouvent. Ce sont des fichiers cachés, leur nom débute avec un point.
Mais si vous utilisez simplement la commande "ls" ainsi :
ls
Vous obtenez :
2010-02-26--10.13.22 fstab phpmyadmin.png caisse_060810.ods gparted1.png resilier-sfr commande_sed1.txt liste-mail RMLL_2.m4v commande_sed2.txt konversation scripts_user debian-504-i386-netinst.iso listecamera_site site_agen_100806.ods debian-facile-le-magazine.pdf liste_site.ods site_agen_100809.ods default .../...
Ce sont vos fichiers simples présents dans votre home.
Mais avec son option -l
ainsi :
ls -a
vous verrez en plus tous les fichiers cachés :
. .gnome2_private nfs-df.odt .. .gnupg .openoffice.org 2010-02-26--10.13.22 gparted1.png .openoffice.org2 .aptitude .gstreamer-0.10 out.ogv .../...
On voit que le fichier ~/.bash_profile
par défaut ne fait rien d'autre que charger le ~/.bashrc
.
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
De même, le ~/.profile
par défaut vérifie que le shell est bien bash, puis interprète le ~/.bashrc
.
if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi
Il vérifie en plus si le dossier ~/bin
existe, et, le cas échéant, l'ajoute au PATH.
if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi
Le fichier ~/.bashrc
est celui contenant la réelle configuration utilisateur de bash.
Il commence par vérifier qu'il est bien lancé par un utilisateur et non interpréteur d'un script3). Il s'arrête si ça n'est pas le cas.
case $- in *i*) ;; *) return;; esac
Les lignes suviantes concernent la configuration de l'historique de bash.
HISTCONTROL=ignoreboth shopt -s histappend HISTSIZE=1000 HISTFILESIZE=2000
Ici, l'historique ne stocke pas les doublons, conserve le précédent historique, mais le limite à 1000 lignes et 2ko.
Il met à jour la les variables d'environnement de taille du terminal:
shopt -s checkwinsize
Il définit la variable debian_chroot s'il trouve un fichier /etc/debian_chroot
. Cette variable sera ensuite utilisée dans le prompt.
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then debian_chroot=$(cat /etc/debian_chroot) fi
Il tente de déterminer par plusieurs moyens s'il s'agit d'un terminal couleur ou non :
case "$TERM" in xterm-color) color_prompt=yes;; esac #force_color_prompt=yes if [ -n "$force_color_prompt" ]; then if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then color_prompt=yes else color_prompt= fi fi
Vous pouvez forcer la détection en décommentant #force_color_prompt=yes
.
Il définit le prompt suivant que le terminal soit en couleur ou non :
if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt
PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'
Article détaillant les codes couleurs et éléments possibles , ou un générateur de prompt en ligne, pratique : https://ezprompt.net/
Si le terminal est compatible xterm ou rxvt, il change le prompt de manière à changer le titre tu terminal.
# If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ;; *) ;; esac
Les alias sont des outils très pratiques, voir alias pour un description plus approfondie.
Le fichier ~/.bashrc
commence par définir des alias colorés pour ls dans le cas d'un terminal coloré :
# enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" alias ls='ls --color=auto' #alias dir='dir --color=auto' #alias vdir='vdir --color=auto' #alias grep='grep --color=auto' #alias fgrep='fgrep --color=auto' #alias egrep='egrep --color=auto' fi
Le fichier propose ensuite de définir quelques alias bien pratiques :
# some more ls aliases #alias ll='ls -l' #alias la='ls -A' #alias l='ls -CF'
Enfin, si le fichier ~/.bash_aliases
existe, il l'interprète :
if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
Aussi, si vous voulez définir des alias personnels, la méthode la plus propre et portable est de les définir dans un fichier ~/.bash_aliases
, à créer.
Bash tente enfin de charger l'autocomplétion si elle est disponible et souhaitable :
if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi
Le fichier ~/.bash_logout
s'occupe d'effacer le terminal à la déconnexion :
if [ "$SHLVL" = 1 ]; then [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q fi
Contient tout l'historique des commandes que vous avez saisies.