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 16:28]
MicP [Dépièçage d'un Script contenant des Alias] ajout en tête
doc:programmation:bash:config [24/09/2015 19:16]
milou [Bash, découverte avancée]
Ligne 1: Ligne 1:
-====== ​Dépièçage d'un Script contenant des Alias ====== +====== ​Bash, découverte avancée ​====== 
-LOL + 
-  * Objet : script alias +  * Objet : Comprendre à quoi servent les différentes configurations de bash 
-  * Niveau requis : {{tag>​débutant}} +  * Niveau requis : {{tag>​débutant ​avisé}} 
-  * Commentaires : //Dépièçage ​d'un Script contenant des [[:​doc:​programmation:​bash:​alias|Alias]]. //+  * Commentaires : //Bash possède bon nombre ​d'options et de fichiers de configurationsComment 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>​à-corriger}} +  * Suivi : {{tag>​à-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 Lien (temporaire) vers le forum concernant ce tuto]]((N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))FIXME +  * 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 !))
-===== Scripts existants dans ~/user ou /root =====+
  
-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 63: 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 75: 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 =====+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>
  
-Ces scripts ne concernent que l'​utilisateur (/home/**user**). Où user est votre **login**.\\  +Ce sont vos fichiers simples présents dans votre //home//. \\ 
-Ce sont des fichiers cachés, leur nom débute ​avec un point.+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>​
  
-==== .profile ====+==== ~/​.bash_profile,​ ~/​.bash_login et ~/.profile ====
  
-''​.profile'' ​(//avec un point devant !//) est le fichier qui est interprété au lancement de la console.+On voit que le fichier ​''​~/.bash_profile'' ​par défaut ne fait rien d'​autre que charger ​le ''​~/​.bashrc''​.
  
-Pour afficher votre propre fichier, tapez : +<file bash ~/​.bash_profile>if [ -f ~/.bashrc ]; then 
-<code user> +    ​. ​~/.bashrc 
-cat ~/.profile +fi</file
-  # ​~/.profile: executed by the command interpreter for login shells. + 
-  # This file is not read by bash(1)if ~/.bash_profile or ~/.bash_login +De mêmele ''​~/.profile''​ par défaut vérifie que le shell est bien bash, puis interprète le ''​~/.bashrc''​
-  # exists+<​file ​bash ~/.profile>if [ -n "​$BASH_VERSION"​ ]; then 
-  # see /​usr/​share/​doc/​bash/examples/​startup-files for examples. +   ​# include .bashrc if it exists 
-  # the files are located in the bash-doc package. +  if [ -f "​$HOME/​.bashrc"​ ]; then 
-   +       ​. "​$HOME/​.bashrc"​
-  # 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 +
-    if [ -f "​$HOME/​.bashrc"​ ]; then +
-         ​. "​$HOME/​.bashrc"​ +
-    fi+
   fi   fi
-   +fi</file>
-  # 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 : +Il vérifie en plus si le dossier ''​~/​bin''​ existe, et, le cas échéant, l'​ajoute ​au PATH. 
-  - un fichier (.bashrc dans votre /home/user) et +<file bash ~/.profile>​if [ -d "$HOME/bin" ] ; then 
-  ​- un chemin (répertoire ​/bin dans votre /home/user).+  ​PATH="​$HOME/bin:​$PATH"​ 
 +fi</file>
  
-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. \\ +==== ~/​.bashrc ​====
-Les principales commandes étant contenues dans le répertoire **/bin** de la racine.+
  
-==== .bashrc ​====+Le fichier ''​~/​.bashrc''​ est celui contenant la réelle configuration utilisateur de **bash**.
  
-Pour afficher votre propre fichier ​''​.bashrc''​, tapez : +=== Uniquement pour le mode interactif === 
-<​code ​user>​cat ​~/.bashrc</code+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>​case $- in 
-Voici le début du script : +    *i*;; 
-<​code>​ +      *return;; 
-  # ~/.bashrc: executed by bash(1for non-login shells. +esac</​code>​
-  # 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.+=== Historique === 
 + 
 +Les lignes suviantes concernent la configuration ​de l'​historique de bash. 
 +<file bash ~/​.bashrc>​HISTCONTROL=ignoreboth 
 +shopt -s histappend 
 +HISTSIZE=1000 
 +HISTFILESIZE=2000</​file>​ 
 +Ici, l'​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 [ -z "​${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 [ -n "​$force_color_prompt"​ ]; then 
 +    if [ -x /​usr/​bin/​tput ] && tput setaf 1 >&/​dev/​null;​ then 
 + color_prompt=yes 
 +    else 
 + color_prompt= 
 +    fi 
 +fi</​file>​ 
 +Vous pouvez forcer la détection en décommentant ''#​force_color_prompt=yes''​. 
 + 
 +=== 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\]\$ ' 
 +else 
 +    PS1='​${debian_chroot:​+($debian_chroot)}\u@\h:​\w\$ ' 
 +fi 
 +unset color_prompt force_color_prompt</​file>​ 
 + 
 +=== 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>​ 
 + 
 +=== Alias === 
 + 
 +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>​ 
 + 
 +Enfinsi le fichier ''​~/​.bash_aliases''​ existe, il l'​interprète :​ 
 +<file bash ~/​.bashrc>​if [ -f ~/​.bash_aliases ]; then 
 +    . ~/​.bash_aliases 
 +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 === 
 + 
 +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