# Explication des scripts du fichier profile

**URL:** <https://www.debian-fr.org/t/explication-des-scripts-du-fichier-profile/76070>\
**Category:** Programmation\
**Tags:** script\
**Created:** [Mars 5, 2018, 1:01 UTC](https://www.debian-fr.org/t/explication-des-scripts-du-fichier-profile/76070 "2018-03-05T13:01:05Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![FastNugget](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/b4bc9f/32.png) [@FastNugget](https://www.debian-fr.org/u/FastNugget)\
**Post date:** [Mars 5, 2018, 1:01 UTC](https://www.debian-fr.org/t/explication-des-scripts-du-fichier-profile/76070/1 "2018-03-05T13:01:06Z")

</div>

Bonjour,

ayant récemment installer Debian pour avoir un meilleur environnement d’hébergement pour mon serveur, je bute sur un script dans le fichier etc/profile.

Voici le script:

```auto
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

```

Pourriez-vous me dire à quoi correspond les paramètres `id -u` ?

Pourquoi des symboles comme ceux-ci -\> ` ?

Est ce que c’est une référence qui permet de récupérer le résultat d’exécution d’un script nommé id en mode -u ?

Seconde question, j’ai vu que les $0 ou 1 ou 2 étaient réservé pour afficher des variables d’instance du shell, comme son pid par exemple

Mais par exemple, dans l’expression “${PS1-}”, si je fait echo “${PS1-}”, je tombe sur une ribambelle de chemin.

Que signifie les brackets {} autour de l’expression ? Et que signifie le - à la fin ?

Je sais que cela fait beaucoup de question, j’essaye de démystifier tout ça.

Merci à vous

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Mars 5, 2018, 1:13 UTC](https://www.debian-fr.org/t/explication-des-scripts-du-fichier-profile/76070/2 "2018-03-05T13:13:36Z")

</div>

Bonjour,

alors:

- `id -u` retourne l’identifiant utilisateur (UID). S’il est égal à 0, c’est l’utilisateur root. L’utilisateur principal se voit attribuer l’UID 1000, et les utilisateurs suivants un UID \> 1000. Donc le if vérifie si l’utilisateur est root, si c’est le cas il charge les répertoires contenant les binaires “administrateurs” (les trucs en sbin) dans la variable $PATH (qui contient les répertoires des commandes que tu peux appeler).
- les backticks ` entourent une commande dans un script, par exemple pour récupérer le résultat d’une commande (comme id -u) dans une variable on peut faire: variable=`id -u`. La syntaxe conseillée est plutôt variable=$(id -u) mais bon.
- $0 est la “base” de la commande que tu appelles, $1 son premier argument, $2 le 2e, etc. Par exemple dans un script shell qui contient une indication sur l’utilisation du script, on peut écrire “Utilisation: $0 [options]”. $# est le nombre d’arguments, et $? le code retour. Par exemple dans un script il est courant de vérifier le nombre d’arguments donnés dans la commande en faisant un if sur la valeur de $# et et si c’est pas bon on affiche le fameux “Utilisation: $0 [options] paramètres attendus, etc.”
- les variables $PS1, $PS2 etc sont les variables qui définissent l’apparence de ton prompt shell (le truc du style “sputnik@debian:~$”)
- les accolades permettent “d’entourer” une variable, par exemple si j’ai une variable qui s’appelle $TOTO et que je veux afficher son contenu + une chaîne de caractères, je vais faire: `echo ${TOTO}chaine` parce que si j’écris `echo $TOTOchaine`, bash ne va pas comprendre car je n’ai aucune variable qui s’appelle $TOTOchaine. Mais surtout, avec les accolades on peut faire de l’expansion de paramètres: [http://wiki.bash-hackers.org/syntax/pe](http://wiki.bash-hackers.org/syntax/pe)

Par contre le - à la fin je ne sais pas…

---

<div class="post-metadata">

**Author:** ![FastNugget](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/b4bc9f/32.png) [@FastNugget](https://www.debian-fr.org/u/FastNugget)\
**Post date:** [Mars 5, 2018, 1:49 UTC](https://www.debian-fr.org/t/explication-des-scripts-du-fichier-profile/76070/3 "2018-03-05T13:49:43Z")

</div>

Merci pour cette réponse très complète 🙂

---

<div class="post-metadata">

**Author:** ![Sputnik93](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/s/35a633/32.png) [@Sputnik93](https://www.debian-fr.org/u/Sputnik93)\
**Post date:** [Mars 5, 2018, 4:08 UTC](https://www.debian-fr.org/t/explication-des-scripts-du-fichier-profile/76070/4 "2018-03-05T16:08:40Z")

</div>

> [@Sputnik93](#):
>
> Par contre le - à la fin je ne sais pas…

Je suis allé regarder sur StackOverflow, en fait ${VAR-} c’est la même chose que ${VAR:-}, ça sert à affecter une valeur par défaut (en l’occurrence: rien) si la variable n’est pas déclarée (en plus ils le disent dans le lien cité ci-dessus). La différence est que sans le `:` il y aura affectation d’une valeur par défaut seulement si la variable n’est pas déclarée (et pas si elle est vide, ce qui revient au même dans ce cas).

```auto
sputnik@debian:~$ echo ${TOTO-} # $TOTO n'est pas déclarée

sputnik@debian:~$ echo ${TOTO-bonjour}
bonjour
sputnik@debian:~$ TOTO=""
sputnik@debian:~$ echo ${TOTO-bonjour} # $TOTO est déclarée à la ligne au-dessus

sputnik@debian:~$ echo ${TOTO:-bonjour}
bonjour
sputnik@debian:~$ 

```

---

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Mars 5, 2018, 4:17 UTC](https://www.debian-fr.org/t/explication-des-scripts-du-fichier-profile/76070/5 "2018-03-05T16:17:57Z")

</div>

id = 0, c’est l’administrateur, le propriétaire “root”

Il peut lancer directement des commandes de /usr/sbin, contrairement aux autres utilisateurs.

C’est le sens de cette condition: `if [“id -u” -eq 0]`

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Mars 5, 2018, 9:07 UTC](https://www.debian-fr.org/t/explication-des-scripts-du-fichier-profile/76070/6 "2018-03-05T21:07:17Z")

</div>

Je me suis permis de déplacer le sujet à la bonne place dans programmation 😉

---

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Juillet 14, 2018, 1:31 UTC](https://www.debian-fr.org/t/explication-des-scripts-du-fichier-profile/76070/7 "2018-07-14T13:31:26Z")

</div>

Pour avancer:  
[guide Avancé des Scripts Bash](https://abs.traduc.org/abs-fr/)

et pour connaître la version de son interpréteur : bash --version
