| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| tutoriel:script_shell [Le 18/05/2026, 22:30] – [Méthode dans un terminal] réécriture | +shebang (!) | mise en forme | pas de première personne | liens internes | etc. krodelabestiole | tutoriel:script_shell [Le 28/07/2026, 10:51] (Version actuelle) – [Liens] ajout lien vers blog S.Robert ! bcag2 |
|---|
| === $PATH === | === $PATH === |
| |
| La [[:variables_d_environnement|variable d'environnement]] ''[[:variables_d_environnement#variables_liees_aux_emplacements_de_fichiers|$PATH]]'' défini les répertoire où le système doit chercher les fichiers exécutables. | La [[:variables_d_environnement|variable d'environnement]] ''[[:variables_d_environnement#variables_liees_aux_emplacements_de_fichiers|$PATH]]'' définit les répertoires où le système doit chercher les fichiers exécutables. |
| |
| En plaçant un fichier exécutable (comme un script) dans l'un de ces répertoires, il n'est pas nécessaire de spécifier son [[:chemins|chemin]] complet pour le lancer.\\ | En plaçant un fichier exécutable (comme un script) dans l'un de ces répertoires, il n'est pas nécessaire de spécifier son [[:chemins|chemin]] complet pour le lancer. Le nom du fichier suffit.\\ |
| Ubuntu dispose d'un répertoire [[:arborescence#binaires personnels]] à cet effet dans le [[:arborescence#répertoire personnel]] de chaque [[:utilisateur]], qu'on peut manipuler sans les [[:permissions administrateur]]. | Ubuntu dispose d'un répertoire des [[:arborescence#binaires personnels]] à cet effet dans le [[:arborescence#répertoire personnel]] de chaque [[:utilisateur]], qu'on peut manipuler sans les [[:permissions administrateur]]. |
| |
| Pour voir à quoi ressemble ''$PATH'', entrer la commande : | Pour voir à quoi ressemble ''$PATH'', entrer la commande : |
| /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games | /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games |
| |
| C'est à dire que le système va aller voir si un script ou un exécutable se trouve dans ''/usr/local/bin'', puis dans ''/usr/bin'', , puis dans ''/bin'', etc. | C'est à dire que le système va aller voir si un script ou un exécutable se trouve dans ''/usr/local/bin'', puis dans ''/usr/bin'', puis dans ''/bin'', etc. |
| |
| On peut aussi ajouter un répertoire particulier à la variable ''$PATH''.\\ | On peut aussi ajouter un répertoire particulier à la variable ''$PATH''.\\ |
| Pour ceci, il suffit de faire : | Pour ceci, il suffit d'entrer : |
| export PATH=$PATH:$HOME/bin | export PATH=$PATH:$HOME/bin |
| où ''$HOME/bin'' est le répertoire concerné. | où ''$HOME/bin'' est le répertoire concerné. |
| Il existe encore beaucoup d'autres types de //shells//.\\ Pour savoir quel type de //shell// est utilisé sur une machine, entrer la commande ''[[man>ps]]''. | Il existe encore beaucoup d'autres types de //shells//.\\ Pour savoir quel type de //shell// est utilisé sur une machine, entrer la commande ''[[man>ps]]''. |
| |
| La commande ''[[man>sh]]'' est en fait un lien symbolique vers l'interpréteur de commandes par défaut : ''/usr/bin/dash''. | La commande ''[[man>sh]]'' est en fait un [[:lien_physique_et_symbolique|lien symbolique]] vers l'interpréteur de commandes par défaut : ''/usr/bin/dash''. |
| |
| <note> | <note> |
| |
| Il y a en 3 : | Il y a en 3 : |
| * le **et** logique : -a | ^ opérateur ^ solution POSIX ^ solution BASH moderne ^ |
| * le **ou** logique : -o | | **et** logique | **-a** avec simple crochets,\\ exemple : <code>[ -n "$ma_var" -a "$ma_var" = "Oui" ]</code>\\ mais on peut aussi écrire :\\ <code>[ -n "$ma_var" ] && [ "$ma_var" = "Oui" ]</code> | **&&** avec double crochets, exemple : <code bash>[[ -n "$ma_var" && "$ma_var" == "Oui" ]]</code> | |
| * le **non** logique : ! | | **ou** logique | **-o** avec simple crochets | **||** avec double crochets\\ <code bash>[[ "$ma_var" = "Oui" || "$ma_var" = "Yes" ]]</code> | |
| Exemple : | | **non** logique | **!** dans tous les cas | | |
| <code bash> | |
| echo "renverra 0 si les deux expressions sont vraies" | |
| test expr1 -a expr2 | |
| [ expr1 -a expr2 ] | |
| </code> | |
| |
| == Table de vérité de « -a » == | == Table de vérité de « -a » == |
| L'instruction ''`read`'' permet d'affecter une valeur ou un caractère à une variable quelconque, en la demandant à l'utilisateur. | L'instruction ''`read`'' permet d'affecter une valeur ou un caractère à une variable quelconque, en la demandant à l'utilisateur. |
| |
| <note>En bash, la variable est considérée comme une chaîne même si celle-ci contient une valeur numérique, et les majuscules sont considérées différentes des minuscules, $M ≠ $m.</note> | <note>En bash, la variable est considérée comme une chaîne même si celle-ci contient une valeur numérique,\\ et les majuscules sont considérées différentes des minuscules, $M ≠ $m.</note> |
| |
| Ensuite vient l'instruction conditionnelle `if`. Elle est suivie d'un « [ » | Ensuite vient l'instruction conditionnelle `if`. Elle est suivie d'un « [ » |
| ===== Liens ===== | ===== Liens ===== |
| |
| * (fr) https://marcg.developpez.com/ksh/ : Pour ceux qui souhaitent aller plus loin dans la conception de script shell. | * (fr) [[https://blog.stephane-robert.info/docs/admin-serveurs/linux/exploiter/scripts/shell/|Très bon tuto de Stéphane Robert]] |
| | * (fr) [[https://marcg.developpez.com/ksh/|Pour ceux qui souhaitent aller plus loin dans la conception de script shell, tuto de MarcG sur developpez.com]] |
| * (fr) [[https://abs.traduc.org/abs-fr/|Guide avancé d'écriture des scripts Bash]] : Un très bon tutoriel concernant la réalisation du script shell. C'est l'un des plus complets et les mieux détaillés disponibles en français. Il contient également [[http://abs.traduc.org/abs-5.3-fr/apa.html|des exemples de script complets]], une [[http://abs.traduc.org/abs-5.3-fr/apb.html|carte de référence]] (variables, tests...). Ce site est un site qui vaut réellement le détour pour tous ceux qui cherchent à créer des scripts complets en utilisant au mieux les performances du shell. | * (fr) [[https://abs.traduc.org/abs-fr/|Guide avancé d'écriture des scripts Bash]] : Un très bon tutoriel concernant la réalisation du script shell. C'est l'un des plus complets et les mieux détaillés disponibles en français. Il contient également [[http://abs.traduc.org/abs-5.3-fr/apa.html|des exemples de script complets]], une [[http://abs.traduc.org/abs-5.3-fr/apb.html|carte de référence]] (variables, tests...). Ce site est un site qui vaut réellement le détour pour tous ceux qui cherchent à créer des scripts complets en utilisant au mieux les performances du shell. |
| * (fr) https://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux : Un tutoriel très complet pour linux qui comporte quelques parties sur la réalisation de scripts bash. | * (fr) https://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux : Un tutoriel très complet pour linux qui comporte quelques parties sur la réalisation de scripts bash. |