logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
doc:programmation:bash:config [02/03/2014 14:52]
captnfab
doc:programmation:bash:config [16/08/2023 00:35]
Switch [Configuration utilisateur]
Ligne 2: Ligne 2:
  
   * Objet : Comprendre à quoi servent les différentes configurations de bash   * Objet : Comprendre à quoi servent les différentes configurations de bash
-  * Niveau requis : {{tag>​débutant}}+  * Niveau requis : {{tag>​débutant ​avisé}}
   * Commentaires : //Bash possède bon nombre d'​options et de fichiers de configurations. Comment comprendre tout ça ?//   * Commentaires : //Bash possède bon nombre d'​options et de fichiers de configurations. Comment comprendre tout ça ?//
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  * Suivi : {{tag>​à-tester}} +  * Suivi : {{tag>à-compléter ​à-tester}} 
-    * Création par : **devpsp** 18/08/2010 15:05 +    * Création par : [[user>devpsp]] le 18/08/2010 15:05 
     * Testé par :     * Testé par :
-  * Commentaires sur le forum : [[http://​debian-facile.org/​viewtopic.php?​id=2867 | ici]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))+  * Commentaires sur le forum : [[https://​debian-facile.org/​viewtopic.php?​id=12294 | ici]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) 
 + 
 +**Nota :** Contributeurs,​ les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !
  
 ===== Les scripts de configuration ===== ===== Les scripts de configuration =====
Ligne 21: Ligne 23:
  
   * ''​.bash_profile''​ ou ''​.bash_login''​ ou ''​.profile''​   * ''​.bash_profile''​ ou ''​.bash_login''​ ou ''​.profile''​
 +
   * ''​.bashrc''​   * ''​.bashrc''​
 +
   * ''​.bash_logout''​   * ''​.bash_logout''​
 +
   * ''​.bash_history''​   * ''​.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''​.+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 simmuler ​un shell de login en tapant+Il est possible de simuler ​un shell de login en tapant
 <code user>​bash -l</​code>​ <code user>​bash -l</​code>​
  
Ligne 100: Ligne 107:
 Ces scripts ne concernent que l'​utilisateur dans le dossier personnel duquel ils se trouvent. ​ 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. Ce sont des fichiers cachés, leur nom débute avec un point.
 +
 +Mais si vous utilisez simplement [[:​doc:​systeme:​ls |la commande "​ls"​]] ainsi :
 +<code user>​ls</​code>​
 +Vous obtenez :
 +<file config retour de la commande>​
 +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 ​                     ​
 +.../​...</​file>​
 +
 +Ce sont vos fichiers simples présents dans votre //home//. \\
 +Mais avec son option ''​-l''​ ainsi :
 +<code user>ls -a</​code>​
 +vous verrez en plus __tous les fichiers cachés__ :
 +<file config retour de la commande>​
 +.                              .gnome2_private ​      ​nfs-df.odt
 +..                             ​.gnupg ​               .openoffice.org
 +2010-02-26--10.13.22 ​          ​gparted1.png ​         .openoffice.org2
 +.aptitude ​                     .gstreamer-0.10 ​      ​out.ogv
 +.../​...</​file>​
  
 ==== ~/​.bash_profile,​ ~/​.bash_login et ~/.profile ==== ==== ~/​.bash_profile,​ ~/​.bash_login et ~/.profile ====
Ligne 105: Ligne 136:
 On voit que le fichier ''​~/​.bash_profile''​ par défaut ne fait rien d'​autre que charger le ''​~/​.bashrc''​. On voit que le fichier ''​~/​.bash_profile''​ par défaut ne fait rien d'​autre que charger le ''​~/​.bashrc''​.
  
-<file bash ~/​.bash_profile>​# ~/​.bash_profile:​ executed by bash(1) for login shells. +<file bash ~/​.bash_profile>​if [ -f ~/.bashrc ]; then
-# see /​usr/​share/​doc/​bash/​examples/​startup-files for examples. +
-# the files are located in the bash-doc package. +
- +
-# the default umask is set in /​etc/​login.defs +
-#umask 022 +
- +
-# include .bashrc if it exists +
-if [ -f ~/.bashrc ]; then+
     . ~/.bashrc     . ~/.bashrc
 fi</​file>​ fi</​file>​
  
 De même, le ''​~/​.profile''​ par défaut vérifie que le shell est bien bash, puis interprète le ''​~/​.bashrc''​. De même, le ''​~/​.profile''​ par défaut vérifie que le shell est bien bash, puis interprète le ''​~/​.bashrc''​.
-Il vérifie en plus si le dossier ''​~/​bin''​ existe, et, le cas échéant, l'​ajoute au PATH. +<file bash ~/​.profile>​if [ -n "​$BASH_VERSION"​ ]; then
- +
-<file bash ~/​.profile>​ +
-# ~/.profile: executed by the command interpreter for login shells. +
-# This file is not read by bash(1), if ~/​.bash_profile or ~/​.bash_login +
-# exists. +
-# see /​usr/​share/​doc/​bash/​examples/​startup-files for examples. +
-# the files are located in the bash-doc package. +
- +
-# the default umask is set in /​etc/​profile;​ for setting the umask +
-# for ssh logins, install and configure the libpam-umask package. +
-#umask 022 +
- +
-# if running bash +
-if [ -n "​$BASH_VERSION"​ ]; then+
    # include .bashrc if it exists    # include .bashrc if it exists
   if [ -f "​$HOME/​.bashrc"​ ]; then   if [ -f "​$HOME/​.bashrc"​ ]; then
        . "​$HOME/​.bashrc"​        . "​$HOME/​.bashrc"​
   fi   fi
-fi+fi</​file>​
  
-# set PATH so it includes user's private ​bin if it exists +Il vérifie en plus si le dossier ​''~/bin''​ existe, et, le cas échéant, l'​ajoute au PATH. 
-if [ -d "​$HOME/​bin"​ ] ; then+<file bash ~/​.profile>​if [ -d "​$HOME/​bin"​ ] ; then
   PATH="​$HOME/​bin:​$PATH"​   PATH="​$HOME/​bin:​$PATH"​
 fi</​file>​ fi</​file>​
Ligne 146: Ligne 155:
 ==== ~/.bashrc ==== ==== ~/.bashrc ====
  
-Pour afficher votre propre ​fichier ''​.bashrc''​, tapez : +Le fichier ''​~/.bashrc'' ​est celui contenant la réelle configuration utilisateur de **bash**.
-<code user>cat ~/.bashrc</​code>​+
  
-Que voici: +=== Uniquement pour le mode interactif === 
-FIXME +Il commence par vérifier qu'il est bien lancé par un utilisateur et non interpréteur d'un script((via #​!/​bin/​bash)). Il s'​arrête si ça n'est pas le cas. 
-<code bash ~/​.bashrc>​# ~/.bashrc: executed by bash(1) for non-login shells. +<code bash ~/​.bashrc>​case $- in
-# see /​usr/​share/​doc/​bash/​examples/​startup-files (in the package bash-doc) +
-# for examples +
- +
-# If not running interactively,​ don't do anything +
-case $- in+
     *i*) ;;     *i*) ;;
       *) return;;       *) return;;
-esac+esac</​code>​
  
-# don't put duplicate lines or lines starting with space in the history. +=== Historique ===
-# See bash(1) for more options +
-HISTCONTROL=ignoreboth+
  
-# append to the history file, don't overwrite it+Les lignes suviantes concernent la configuration de l'historique de bash. 
 +<file bash ~/​.bashrc>​HISTCONTROL=ignoreboth
 shopt -s histappend shopt -s histappend
- 
-# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) 
 HISTSIZE=1000 HISTSIZE=1000
-HISTFILESIZE=2000+HISTFILESIZE=2000</​file>​ 
 +Ici, l'​historique ne stocke pas les doublons, conserve le précédent historique, mais le limite à 1000 lignes et 2ko.
  
-# check the window size after each command and, if necessary, +=== Taille du terminal === 
-# update the values of LINES and COLUMNS. +Il met à jour la les variables d'​environnement de taille du terminal: 
-shopt -s checkwinsize+<file bash ~/​.bashrc>​shopt -s checkwinsize</​file>​
  
-# If set, the pattern "​**"​ used in a pathname expansion context will +=== Chroot === 
-# match all files and zero or more directories and subdirectories. +Il définit la variable debian_chroot ​s'il trouve un fichier ''​/etc/debian_chroot''​. Cette variable ​sera ensuite utilisée dans le prompt. 
-#shopt -globstar +<file bash ~/​.bashrc>​if [ -z "​${debian_chroot:​-}"​ ] && [ -r /​etc/​debian_chroot ]; then
- +
-# make less more friendly for non-text input files, see lesspipe(1) +
-#[ -x /usr/bin/​lesspipe ] && eval "​$(SHELL=/​bin/​sh lesspipe)"​ +
- +
-# set variable ​identifying the chroot you work in (used in the prompt ​below) +
-if [ -z "​${debian_chroot:​-}"​ ] && [ -r /​etc/​debian_chroot ]; then+
     debian_chroot=$(cat /​etc/​debian_chroot)     debian_chroot=$(cat /​etc/​debian_chroot)
-fi+fi</​file>​
  
-# set a fancy prompt (non-color, unless we know we "​want"​ color) +=== Terminal en couleur === 
-case "​$TERM"​ in+Il tente de déterminer par plusieurs moyens s'il s'agit d'un terminal couleur ou non : 
 +<file bash ~/​.bashrc>​case "​$TERM"​ in
     xterm-color) color_prompt=yes;;​     xterm-color) color_prompt=yes;;​
 esac esac
  
-# uncomment for a colored prompt, if the terminal has the capability; turned 
-# off by default to not distract the user: the focus in a terminal window 
-# should be on the output of commands, not on the prompt 
 #​force_color_prompt=yes #​force_color_prompt=yes
  
 if [ -n "​$force_color_prompt"​ ]; then if [ -n "​$force_color_prompt"​ ]; then
     if [ -x /​usr/​bin/​tput ] && tput setaf 1 >&/​dev/​null;​ then     if [ -x /​usr/​bin/​tput ] && tput setaf 1 >&/​dev/​null;​ then
- # We have color support; assume it's compliant with Ecma-48 
- # (ISO/​IEC-6429). (Lack of such support is extremely rare, and such 
- # a case would tend to support setf rather than setaf.) 
  color_prompt=yes  color_prompt=yes
     else     else
  color_prompt=  color_prompt=
     fi     fi
-fi+fi</​file>​ 
 +Vous pouvez forcer la détection en décommentant ''#​force_color_prompt=yes''​.
  
-if [ "​$color_prompt"​ = yes ]; then+=== Prompt === 
 + 
 +Il définit le prompt suivant que le terminal soit en couleur ou non : 
 +<file bash ~/​.bashrc>​if [ "​$color_prompt"​ = yes ]; then
     PS1='​${debian_chroot:​+($debian_chroot)}\[\033[01;​32m\]\u@\h\[\033[00m\]:​\[\033[01;​34m\]\w\[\033[00m\]\$ '     PS1='​${debian_chroot:​+($debian_chroot)}\[\033[01;​32m\]\u@\h\[\033[00m\]:​\[\033[01;​34m\]\w\[\033[00m\]\$ '
 else else
     PS1='​${debian_chroot:​+($debian_chroot)}\u@\h:​\w\$ '     PS1='​${debian_chroot:​+($debian_chroot)}\u@\h:​\w\$ '
 fi fi
-unset color_prompt force_color_prompt+unset color_prompt force_color_prompt</​file>​
  
-# If this is an xterm set the title to user@host:​dir+<note tip>Il est possible de configurer son prompt avec des éléments et des couleurs de votre choix. Il suffit de configurer la variable $PS1 vous même dans votre fichier de configuration .bashrc. Exemple :<file config nom> 
 +PS1='​\[\e]0;​\u@\h:​ \w\a\]${debian_chroot:​+($debian_chroot)}\[\033[01;​32m\]\u@\h\[\033[00m\]:​\[\033[01;​34m\]\w\[\033[00m\]\$'​ 
 +</​file> ​ [[https://​www.howtogeek.com/​307701/​how-to-customize-and-colorize-your-bash-prompt/​|Article détaillant les codes couleurs et éléments possibles]] , ou un générateur de prompt en ligne, pratique : [[https://​ezprompt.net/​|https://​ezprompt.net/​]] </​note>​ 
 + 
 + 
 +=== Titre du terminal === 
 +Si le terminal est compatible xterm ou rxvt, il change le prompt de manière à changer le titre tu terminal. 
 +<file bash ~/​.bashrc>​# If this is an xterm set the title to user@host:​dir
 case "​$TERM"​ in case "​$TERM"​ in
 xterm*|rxvt*) xterm*|rxvt*)
Ligne 223: Ligne 224:
 *) *)
     ;;     ;;
-esac+esac</​file>​ 
 + 
 + 
 + 
 + 
 +=== Alias === 
 + 
 +Les alias sont des outils très pratiques, voir [[:​doc:​programmation:​bash:​alias]] pour un description plus approfondie.
  
-# enable color support of ls and also add handy aliases+Le fichier ''​~/​.bashrc''​ commence par définir des alias colorés pour ls dans le cas d'un terminal coloré :​ 
 +<file bash ~/​.bashrc>​# enable color support of ls and also add handy aliases
 if [ -x /​usr/​bin/​dircolors ]; then if [ -x /​usr/​bin/​dircolors ]; then
     test -r ~/​.dircolors && eval "​$(dircolors -b ~/​.dircolors)"​ || eval "​$(dircolors -b)"     test -r ~/​.dircolors && eval "​$(dircolors -b ~/​.dircolors)"​ || eval "​$(dircolors -b)"
Ligne 235: Ligne 244:
     #alias fgrep='​fgrep --color=auto'​     #alias fgrep='​fgrep --color=auto'​
     #alias egrep='​egrep --color=auto'​     #alias egrep='​egrep --color=auto'​
-fi+fi</​file>​
  
-# some more ls aliases+Le fichier propose ensuite de définir quelques alias bien pratiques :​ 
 +<file bash ~/​.bashrc>​# some more ls aliases
 #alias ll='ls -l' #alias ll='ls -l'
 #alias la='ls -A' #alias la='ls -A'
-#alias l='ls -CF'+#alias l='ls -CF'</​file>​
  
-# Alias definitions. +Enfin, si le fichier ''​~/​.bash_aliases''​ existeil l'​interprète :​ 
-# You may want to put all your additions into a separate file like +<​file ​bash ~/.bashrc>if [ -f ~/​.bash_aliases ]; then
-~/​.bash_aliases, ​instead of adding them here directly. +
-# See /​usr/​share/​doc/​bash-doc/examples in the bash-doc package. +
- +
-if [ -f ~/​.bash_aliases ]; then+
     . ~/​.bash_aliases     . ~/​.bash_aliases
-fi+fi</​file>​ 
 + 
 +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. 
 + 
 +=== Autocomplétion ===
  
-# enable programmable completion features (you don't need to enable +Bash tente enfin de charger [[:​doc:​programmation:​bash:​autocompletion|l'autocomplétion]] si elle est disponible et souhaitable :​ 
-# this, if it's already enabled in /etc/bash.bashrc and /etc/​profile +<​file ​bash ~/.bashrc>if ! shopt -oq posix; then
-# sources /etc/bash.bashrc). +
-if ! shopt -oq posix; then+
   if [ -f /​usr/​share/​bash-completion/​bash_completion ]; then   if [ -f /​usr/​share/​bash-completion/​bash_completion ]; then
     . /​usr/​share/​bash-completion/​bash_completion     . /​usr/​share/​bash-completion/​bash_completion
Ligne 260: Ligne 268:
     . /​etc/​bash_completion     . /​etc/​bash_completion
   fi   fi
-fi</code>+fi</file>
   ​   ​
 +==== ''​~/​.bash_logout''​ ====
 +
 +Le fichier ''​~/​.bash_logout''​ s'​occupe d'​effacer le terminal à la déconnexion :​
 +<file bash ~/​.bash_logout>​
 +if [ "​$SHLVL"​ = 1 ]; then
 +  [ -x /​usr/​bin/​clear_console ] && /​usr/​bin/​clear_console -q
 +fi</​file>​
 +
 +==== ''​~/​.bash_history''​ ====
 +
 +Contient tout [[:​doc:​programmation:​bash:​history]|l'​historique des commandes]] que vous avez saisies.
  
 +===== Voir aussi =====
 +  * [[doc:​programmation:​shells:​debuter-avec-les-scripts-shell-bash | Apprendre à rédiger des scripts sous bash]] ​
doc/programmation/bash/config.txt · Dernière modification: 16/08/2023 01:05 par Switch

Pied de page des forums

Propulsé par FluxBB