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/10/2013 07:53]
smolski
doc:programmation:bash:config [02/03/2014 14:52]
captnfab
Ligne 1: Ligne 1:
-====== ​Dépieç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 !))
  
-Vous avez 4 fichiers cachés (cachés, car le nom du fichier commence par un point "''​.''"​),​ dans votre //home// (/home/user noté aussi simplement ~/), qui sont là pour vous aider :+===== 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, ​concernant ​la configuration de votre console à son lancement.+Les scripts ​concernant ​tous les utilisateurs du système sont les suivants :​ 
 +  * /​etc/​profile 
 +  * /etc/bash.bashrc
  
-Les scripts concernant tous les utilisateurs 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 =====+Au lancement d'un shell non-interactif,​ c'est le fichier ''/​etc/​bash.bashrc''​ qui est lu, suivi de ''​~/​.bashrc''​.
  
-Ces chemins 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 afficher votre propre fichier, taper +=== PATH Chemins contenant les exécutables === 
-<code user> +Les chemins contenant les exécutables sont déclarés dans la variable d'​environnement PATH via le fichier ''​/​etc/​profile''​ 
-cat /​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/​games"​+  PATH="/​usr/​local/​bin:/​usr/​bin:/​bin:/​usr/​local/​games:/​usr/​games"​
 fi fi
 +export PATH</​file>​
  
-if [ "​$PS1"​ ]; then +Ici 4 chemins sont indiqués, séparés par le caractère "'':''"​. \\ 
-  if [ "​$BASH"​ ]; then +Vous pouvez les utiliser ainsi : 
-    ​PS1='​\u@\h:​\w\$ '+ 
 +  */​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 [ -f /​etc/​bash.bashrc ]; then 
 +      . /​etc/​bash.bashrc 
 +    fi
   else   else
     if [ "`id -u`" -eq 0 ]; then     if [ "`id -u`" -eq 0 ]; then
Ligne 51: 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.
  
-export PATH+=== Chargement des configurations externes ===
  
-umask 022</code>+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.
  
 +if [ -d /​etc/​profile.d ]; then
 +  for i in /​etc/​profile.d/​*.sh;​ do
 +    if [ -r $i ]; then
 +      . $i
 +    fi
 +  done
 +  unset i
 +fi</​file>​
  
-Ici 4 chemins sont indiqués, vous pouvez les utiliser ainsi :+==== Le fichier ''/​etc/​bash.bashrc''​ ==== 
 +FIXME
  
-  */​usr/​local/​bin : Vos premiers script à mettre ici pour vous personnellement (pleins de petits scripts) +===== Configuration utilisateur =====
-  */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...+
  
-===== Scripts dans le /home/user ===== +Ces scripts ne concernent que l'​utilisateur ​dans le dossier personnel duquel ils se trouvent
- +
-Ces scripts ne concernent que l'​utilisateur ​(/​home/​**user**). Où user est votre **login**.\\ +
 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.
  
-==== .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>​# ~/.bash_profile: executed by bash(1) ​for login shells
-<code user> +# see /​usr/​share/​doc/​bash/​examples/​startup-files for examples. 
-cat ~/.profile +# the files are located in the bash-doc package.
-  ​# ~/.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 +
-    if [ -f "​$HOME/​.bashrc"​ ]; then +
-         . "​$HOME/​.bashrc"​ +
-    fi +
-  fi +
-   +
-  # 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 : +# the default umask is set in /etc/login.defs 
-  - un fichier (.bashrc dans votre /home/user) et +#umask 022
-  - 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\\ +# include ​.bashrc ​if it exists 
-Les principales commandes étant contenues dans le répertoire **/bin** de la racine.+if [ -f ~/.bashrc ]; then 
 +    . ~/.bashrc 
 +fi</​file>​
  
-==== .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>​ 
 +# ~/.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 
 +  if [ -f "​$HOME/​.bashrc"​ ]; then 
 +       . "​$HOME/​.bashrc"​ 
 +  fi 
 +fi 
 + 
 +# set PATH so it includes user's private bin if it exists 
 +if [ -d "​$HOME/​bin"​ ] ; then 
 +  PATH="​$HOME/​bin:​$PATH"​ 
 +fi</​file>​ 
 + 
 +==== ~/.bashrc ====
  
 Pour afficher votre propre fichier ''​.bashrc'',​ tapez : Pour afficher votre propre fichier ''​.bashrc'',​ tapez :
 <code user>cat ~/​.bashrc</​code>​ <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.+Que voici: 
 +FIXME 
 +<code bash ~/.bashrc># ~/.bashrc: executed by bash(1) for non-login shells. 
 +# see /​usr/​share/​doc/​bash/​examples/​startup-files (in the package bash-doc) 
 +# for examples
  
-**La suite du fichier nous intéresse...**\\ +# If not running interactively,​ don't do anything 
-Cette partie traite des alias (raccourcispour vous simplifier la vie, rechercher plus bas dans le fichiers les lignes suivantes :+case $- in 
 +    ​*i*) ;; 
 +      *return;; 
 +esac
  
 +# don't put duplicate lines or lines starting with space in the history.
 +# See bash(1) for more options
 +HISTCONTROL=ignoreboth
 +
 +# append to the history file, don't overwrite it
 +shopt -s histappend
 +
 +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
 +HISTSIZE=1000
 +HISTFILESIZE=2000
 +
 +# check the window size after each command and, if necessary,
 +# update the values of LINES and COLUMNS.
 +shopt -s checkwinsize
 +
 +# If set, the pattern "​**"​ used in a pathname expansion context will
 +# match all files and zero or more directories and subdirectories.
 +#shopt -s globstar
 +
 +# 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)
 +fi
 +
 +# set a fancy prompt (non-color, unless we know we "​want"​ color)
 +case "​$TERM"​ in
 +    xterm-color) color_prompt=yes;;​
 +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
 +
 +if [ -n "​$force_color_prompt"​ ]; 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
 +    else
 + color_prompt=
 +    fi
 +fi
 +
 +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
 +
 +# 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
 +
 +# 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
 +
 +# some more ls aliases
 +#alias ll='ls -l'
 +#alias la='ls -A'
 +#alias l='ls -CF'
 +
 +# Alias definitions.
 +# You may want to put all your additions into a separate file like
 +# ~/​.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
 +fi
 +
 +# enable programmable completion features (you don't need to enable
 +# this, if it's already enabled in /​etc/​bash.bashrc and /​etc/​profile
 +# sources /​etc/​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</​code>​
 +  ​
  
doc/programmation/bash/config.txt · Dernière modification: 16/08/2023 01:05 par Switch

Pied de page des forums

Propulsé par FluxBB