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
Prochaine révision Les deux révisions suivantes
doc:programmation:bash:config [16/02/2014 15:34]
MicP [Dépieçage d'un Script contenant des Alias]
doc:programmation:bash:config [02/03/2014 15:22]
captnfab [Configuration utilisateur]
Ligne 1: Ligne 1:
-====== ​Dépièçage d'un Script contenant des Alias ====== +====== ​Bash, découverte avancée ​======
-LOL+
  
-===== Scripts existants dans ~/user ou /root =====+  * Objet : Comprendre à quoi servent les différentes configurations de bash 
 +  * Niveau requis : {{tag>​débutant}} 
 +  * 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à !.]] :-) 
 +  * Suivi : {{tag>​à-tester}} 
 +    * Création par : **devpsp** 18/08/2010 15:05  
 +    * 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 !))
  
-Il y a 4 fichiers cachés (cachés, car le nom du fichier commence par un point "''​.''"​),​ dans votre répertoire utilisateur (/home/user noté aussi simplement ~/) :+===== Les scripts de configuration =====
  
-  -.profile +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és((cachés:​ le nom du fichier commence par un point : « ''​.''​ », ils apparaissent avec un ''​ls ​-a''​.)) rangés dans le répertoire utilisateur (« ''​~''​ »).
-  ​-.bashrc +
-  -.bash_logout +
-  -.bash_history+
  
-Ce sont des fichiers de script ''​shell'',​ permettant de définir l'​environnement de l'​interface en ligne de commande.+Les scripts concernant tous les utilisateurs du système ​sont les suivants :​ 
 +  * /​etc/​profile 
 +  * /etc/bash.bashrc
  
-Les scripts concernant tous les utilisateurs du système se trouvent ici : +Les fichiers de configuration personnels sont les suivants
-  */​etc/​profile +
-  */​etc/​bash.bashrc+
  
 +  * ''​.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 simmuler un shell de login en tapant
 +<code user>​bash -l</​code>​
  
-===== Localisation des scripts dans l'arborescence du système ​de fichiers=====+Au lancement d'un shell non-interactif,​ c'est le fichier ''/​etc/​bash.bashrc''​ qui est lu, suivi de ''​~/​.bashrc''​.
  
-Les chemins d'​accès sont déclarés dans le fichier ''/​etc/​profile''​ 
  
-  * Pour les utilisateurs : /​usr/​local/​bin:/​usr/​bin:/​bin:/​usr/​games +===== Configuration globale =====
-  * Pour les administrateurs : /​usr/​local/​sbin:/​usr/​local/​bin:/​usr/​sbin:/​usr/​bin:/​sbin:/​bin+
  
-**/​etc/​profile** concerne tous les utilisateurs :+==== Le fichier ''​/​etc/​profile''​ ====
  
-Pour visualiser ​le fichier ''/​etc/​profile'' ​de votre installation,​ entrez la commande : +=== PATH : Chemins contenant les exécutables === 
-<code user>​cat ​/etc/profile</code> +Les chemins contenant les exécutables sont déclarés dans la variable d'​environnement PATH via le fichier ''/​etc/​profile''​ 
-<file bash /etc/profile> + 
-/etc/profilesystem-wide .profile file for the Bourne shell (sh(1)) +  * Pour les utilisateurs : /usr/local/bin:/usr/bin:/​bin:/​usr/​games 
-# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).+  * Pour l'​administrateur : /usr/local/sbin:/​usr/​local/​bin:/​usr/​sbin:/​usr/​bin:/​sbin:/​bin
  
-if [ "`id -u`" -eq 0 ]; then+Voici l'​extrait du ''/​etc/​profile''​ définissant les PATH : 
 +<file bash /​etc/​profile>​if [ "`id -u`" -eq 0 ]; then
   PATH="/​usr/​local/​sbin:/​usr/​local/​bin:/​usr/​sbin:/​usr/​bin:/​sbin:/​bin"​   PATH="/​usr/​local/​sbin:/​usr/​local/​bin:/​usr/​sbin:/​usr/​bin:/​sbin:/​bin"​
 else else
   PATH="/​usr/​local/​bin:/​usr/​bin:/​bin:/​usr/​local/​games:/​usr/​games"​   PATH="/​usr/​local/​bin:/​usr/​bin:/​bin:/​usr/​local/​games:/​usr/​games"​
 fi fi
-export PATH+export PATH</​file>​
  
-if [ "​$PS1"​ ]; then+Ici 4 chemins sont indiqués, séparés par le caractère "'':''"​. \\ 
 +Vous pouvez les utiliser ainsi : 
 + 
 +  */​usr/​local/​bin : Vos premiers script à mettre ici pour votre système local (pleins de petits scripts) 
 +  */usr/bin : ici pour les scripts avancés, pour d'​autres utilisateurs (des scripts avec des menus) 
 +  */bin : ici il y en a déjà beaucoup, pour les scripts assurément finis (assez gros, avec des fonctions internes à vos scripts et aux autres) 
 +  */usr/games : il y en a déjà pas mal concernant les jeux... 
 + 
 +=== Chargement des options spécifiques à bash === 
 + 
 +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''​). 
 + 
 +<file bash /​etc/​profile>​if [ "​$PS1"​ ]; then
   if [ "​$BASH"​ ] && [ "​$BASH"​ != "/​bin/​sh"​ ]; then   if [ "​$BASH"​ ] && [ "​$BASH"​ != "/​bin/​sh"​ ]; then
-    # The file bash.bashrc already sets the default PS1. 
-    # PS1='​\h:​\w\$ ' 
     if [ -f /​etc/​bash.bashrc ]; then     if [ -f /​etc/​bash.bashrc ]; then
       . /​etc/​bash.bashrc       . /​etc/​bash.bashrc
Ligne 56: Ligne 75:
     fi     fi
   fi   fi
-fi+fi</​file>​ 
 +Dans le cas contraire, il définit les prompts minimaux pour root et pour les utilisateurs. 
 + 
 +=== Chargement des configurations externes ===
  
-# The default umask is now handled by pam_umask.+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/'':​ 
 +<file bash /​etc/​profile>​# The default umask is now handled by pam_umask.
 # See pam_umask(8) and /​etc/​login.defs. # See pam_umask(8) and /​etc/​login.defs.
  
Ligne 68: Ligne 91:
   done   done
   unset i   unset i
-fi +fi</​file>​
-</​file>​+
  
 +==== Le fichier ''/​etc/​bash.bashrc''​ ====
 +FIXME
  
-Ici 4 chemins sont indiqués, séparés par le caractère "'':''"​. \\ +===== Configuration utilisateur =====
-Vous pouvez les utiliser ainsi :+
  
-  */​usr/​local/​bin : Vos premiers script à mettre ici pour votre système local (pleins de petits ​scripts) +Ces scripts ​ne concernent que l'​utilisateur dans le dossier personnel duquel ils se trouvent. ​ 
-  ​*/​usr/​bin : ici pour les scripts avancés, pour d'​autres utilisateurs (des scripts avec des menus) +Ce sont des fichiers cachésleur nom débute ​avec un point.
-  */bin : ici il y en a déjà beaucoup, pour les scripts assurément finis (assez gros, avec des fonctions internes à vos scripts et aux autres) +
-  */usr/games : il y en a déjà pas mal concernant les jeux...+
  
-===== Scripts dans le /home/user =====+==== ~/.bash_profile,​ ~/.bash_login et ~/​.profile ​====
  
-Ces scripts ​ne concernent ​que l'utilisateur (/home/​**user**)Où user est votre **login**.\\  +On voit que le fichier ''​~/​.bash_profile''​ par défaut ​ne fait rien d'​autre ​que charger le ''~/.bashrc''​.
-Ce sont des fichiers cachés, leur nom débute avec un point.+
  
-==== .profile ====+<file bash ~/.bash_profile>​if [ -f ~/.bashrc ]; then 
 +    . ~/.bashrc 
 +fi</​file>​
  
-''​.profile'' ​(//avec un point devant !//) est le fichier qui est interprété au lancement de la console.+De même, le ''​~/.profile'' ​par défaut vérifie que le shell est bien bash, puis interprète le ''​~/.bashrc''​. 
 +<file bash ~/.profile>​if [ -n "​$BASH_VERSION"​ ]; then 
 +   # include .bashrc if it exists 
 +  if [ -f "$HOME/.bashrc"​ ]; then 
 +       . "$HOME/.bashrc"​ 
 +  fi 
 +fi</​file>​
  
-Pour afficher votre propre fichiertapez : +Il vérifie en plus si le dossier ''​~/​bin''​ existeet, le cas échéant, l'​ajoute au PATH. 
-<code user> +<file bash ~/.profile>if [ -d "​$HOME/​bin"​ ] ; then 
-cat ~/​.profile +  ​PATH="​$HOME/bin:$PATH" 
-  ​# ~/.profileexecuted by the command interpreter for login shells. +fi</file
-  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login + 
-  # exists+==== ~/.bashrc ==== 
-  see /usr/share/doc/bash/examples/​startup-files for examples+ 
-  # the files are located in the bash-doc package+Le fichier ''​~/.bashrc''​ est celui contenant la réelle configuration utilisateur de **bash**
-   + 
-  # the default umask is set in /etc/​profile;​ for setting the umask +=== Uniquement pour le mode interactif === 
-  # for ssh loginsinstall and configure the libpam-umask package+Il commence bas 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. 
-  #​umask 022 +<code bash ~/.bashrc>​case $in 
-   +    *i*) ;; 
-  # if running ​bash +      *) return;; 
-  if [ -"$BASH_VERSION" ]; then +esac</​code>​ 
-     # include ​.bashrc ​if it exists + 
-    if [ -"$HOME/​.bashrc" ]; then +=== Historique === 
-         . "$HOME/.bashrc"​+ 
 +Les lignes suviantes concernent la configuration de l'​historique de bash
 +<​file ​bash ~/.bashrc>​HISTCONTROL=ignoreboth 
 +shopt -s histappend 
 +HISTSIZE=1000 
 +HISTFILESIZE=2000<​/file> 
 +Icil'​historique ne stocke pas les doublons, conserve le précédent historique, mais le limite à 1000 lignes et 2ko
 + 
 +=== Taille du terminal === 
 +Il met à jour la les variables d'​environnement de taille du terminal: 
 +<​file ​bash ~/​.bashrc>​shopt -s checkwinsize</​code>​ 
 + 
 +=== Chroot === 
 +Il définit la variable debian_chroot s'il trouve un fichier ''/​etc/​debian_chroot''​. Cette variable sera ensuite utilisée dans le prompt. 
 +<file bash ~/​.bashrc>​if [ -"${debian_chroot:​-}" ​] && [ -r /​etc/​debian_chroot ​]; then 
 +    ​debian_chroot=$(cat /​etc/​debian_chroot) 
 +fi</​file>​ 
 + 
 +=== Terminal en couleur === 
 +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;;​ 
 +esac 
 + 
 +#​force_color_prompt=yes 
 + 
 +if [ -"$force_color_prompt" ]; then 
 +    if [ -x /usr/​bin/​tput ] && tput setaf 1 >&/​dev/​null;​ then 
 + color_prompt=yes 
 +    else 
 + color_prompt=
     fi     fi
-  ​fi +fi</​file>​ 
-   +Vous pouvez forcer la détection en décommentant ''​#force_color_prompt=yes''.
-  ​set PATH so it includes user's private bin if it exists +
-  if [ -d "​$HOME/​bin"​ ] ; then +
-    PATH="​$HOME/​bin:​$PATH"​ +
-  fi +
-</​code>​+
  
-Ce fichier déclare au système : +=== Prompt ===
-  - un fichier (.bashrc dans votre /home/user) et +
-  - un chemin (répertoire /bin dans votre /​home/​user).+
  
-C'est dans ce fichier (**/​home/​user/.bashrc**ou dans les fichiers du répertoire **/​home/​user/​bin**que seront interprétées les commandes saisies dans la console. ​\\ +Il définit le prompt suivant que le terminal soit en couleur ou non : 
-Les principales commandes étant contenues dans le répertoire **/bin** de la racine.+<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\]\$ ' 
 +else 
 +    PS1='​${debian_chroot:​+($debian_chroot)}\u@\h:\w\$ ' 
 +fi 
 +unset color_prompt force_color_prompt<​/file>
  
-==== .bashrc ​====+=== 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 
 +xterm*|rxvt*) 
 +    PS1="​\[\e]0;​${debian_chroot:​+($debian_chroot)}\u@\h:​ \w\a\]$PS1"​ 
 +    ;; 
 +*) 
 +    ;; 
 +esac</​file>​
  
-Pour afficher votre propre fichier ''​.bashrc'',​ tapez : +=== Alias ===
-<code user>cat ~/​.bashrc</​code>​ +
-   +
-Voici le début du script : +
-<​code>​ +
-  # ~/.bashrc: executed by bash(1) for non-login shells. +
-  # see /​usr/​share/​doc/​bash/​examples/​startup-files (in the package bash-doc) +
-  # for examples</​code>​ +
-   +
-Je n'ai pas mis tout le début du script (assez long, peu utile ici).+
  
-Pas besoin ​de modifier ce qui y est déclaré... Éventuellement, vous y reviendrez  ​plus tard.+Les alias sont des outils très pratiques, voir [[:​doc:​programmation:​bash:​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é :​ 
 +<file bash ~/​.bashrc>#​ 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</​file>​ 
 + 
 +Le fichier propose ensuite ​de définir quelques alias bien pratiques :​ 
 +<file bash ~/.bashrc># some more ls aliases 
 +#alias ll='ls -l' 
 +#alias la='ls -A' 
 +#alias l='ls -CF'</​file>​ 
 + 
 +Enfin, si le fichier ''​~/​.bash_aliases''​ existe, il l'​interprète :​ 
 +<file bash ~/.bashrc>​if [ -f ~/​.bash_aliases ]; then 
 +    . ~/​.bash_aliases 
 +fi</​file>​ 
 + 
 +Aussisi 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 === 
 + 
 +Bash tente enfin de charger [[:​doc:​programmation:​bash:​autocompletion|l'​autocomplétion]] si elle est disponible et souhaitable :​ 
 +<file bash ~/​.bashrc>​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</​file>​ 
 +   
 +==== ''​~/​.bash_logout''​ ====
  
-**La suite du fichier ​nous intéresse...**\\ +Le fichier ​''​~/​.bash_logout''​ s'​occupe d'​effacer ​le terminal à la déconnexion : 
-Cette partie traite des alias (raccourcis) pour vous simplifier la vie, rechercher plus bas dans le fichiers les lignes suivantes ​:+<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.
doc/programmation/bash/config.txt · Dernière modification: 16/08/2023 01:05 par Switch

Pied de page des forums

Propulsé par FluxBB