Menu Fermer

Le bash Linux : tout savoir

Bash est un acronyme de Bourne Again Shell.
Comme son nom l’indique il s’agit d’un Shell Linux, un composant important dans Linux auquel on est rapidement confronté.
Ainsi de nombreuses questions peuvent se poser, comme qu’est-ce que Bash exactement ?
S’agit-il d’un langage de programmation ?
Existe-t-il d’autres Shell dans Linux et quels sont les différences avec Bash.
Enfin peut-t-on accéder à Bash dans Linux ?

Ce tutoriel complet sur Bash répond à toutes ces questions.

Le bash Linux : tout savoir

Qu’est-ce que bash ?

Bash est un programme Shell écrit par Brian Fox en tant que version améliorée du programme Bourne Shell ‘.sh‘.
Il s’agit d’un projet GNU open source. Il a été publié en 1989 comme l’une des distributions de shell les plus populaires des systèmes d’exploitation GNU / Linux. Il fournit des améliorations fonctionnelles par rapport à Bourne Shell pour la programmation et les utilisations interactives. Il comprend l’édition de ligne de commande, les liaisons clés, l’historique des commandes avec une taille illimitée, etc.

Il est conçu pour communiquer facilement entre les différents programmes. Il est similaire à d’autres programmes sur notre ordinateur. La différence de base et principale entre BASH et d’autres programmes est qu’il est conçu pour prendre les entrées / commandes de l’utilisateur tandis que d’autres ont la possibilité de lire des fichiers, de faire des calculs mathématiques, des appareils de contrôle et peuvent plus.
Fondamentalement, un programme Shell est celui qui fournit aux utilisateurs d’interagir avec d’autres programmes à l’aide d’une interface.
En langage simple, Bash est interpréteur de commandes.

Pour être plus précis, Bash est un interprète de langage de commande compatible SH qui exécute des commandes lues à partir de l’entrée standard ou d’un fichier.

Typiquement cela se matérialise par un terminal qui ouvre un shell Bash :

Est-ce que bash est un langage de programmation ?

Bash est un langage de programmation puisqu’il est complet au sens de Turing (Turing-complet).
C’est un langage de type script puisque l’on peut créer des scripts BASH.

Toutefois comme beaucoup de Shell, Bash souffre de limitation qui rend la création de programme en suivant les bonnes pratiques de la programmation.
Par exemple, Bash n’a pas de vrai système de dépendance, une gestion des erreurs limitée, pas de système de log poussé.

Mais un des problèmes avec Bash est qu’il manque beaucoup de fonctionnalités de base, donc lorsque vous écrivez des scripts pour eux, vous appelez souvent en fait des programmes externes pour effectuer le travail souhaité.
La plupart des langages possèdent des librairies que l’on peut ajouter pour proposer des fonctionnalités de bases.

Or l’appel des commandes Linux dans un script Bash est extrêmement lent, car Bash va exécuter la commande en sous processus.
De ce fait, écrire un script complexe devient vite lourd à maintenir et son exécution lente.

Bash et les autres shells et interpréteur sur Linux

Il existe différents types de programmes de Shell avec leur langue distincte.
Selon le type d’appareil (PC, routeur) ou distributions Linux, vous pouvez avoir par défaut un Shell différents.
Les programmes populaires de Shell sont C Shell (CSH), Z Shell (ZSH), Bourne Shell et Korn Shell (KSH).

Les tailles des Shell diffèrent et donc occupent moins d’espace en mémoire lorsqu’ils sont chargés.

Bash et les autres shells et interpréteur sur Linux

De ce fait, les Shell utilisés dans les routeurs sont plutôt plus légers que dans les distributions Linux pour PC et n’offrent aussi généralement que des commandes réseaux.
Par exemple OpenWrt utilise Almquist shell.

La commande Bash

Bash est une interface en ligne de commande uniquement avec un petit nombre de commandes intégrées. Le programme peut lancer de nouveaux programmes ainsi que les contrôler.
Bash a une fonction programmable.
On peut facilement écrire un script bash qui sera utilisé pour accomplir nos tâches quotidiennes. Le manque de compatibilité de Bash ne fait qu’ajouter à sa dépendance, ce qui n’est pas dommageable pour les utilisateurs.

La syntaxe de la commande :

bash [options] [commande | fichier]

Lorsque vous appelez bash à partir de bash, vous démarrez simplement un nouveau shell “à l’intérieur” du shell d’origine. Lorsque vous quittez ce second shell, vous retournez au shell d’origine. Vous pouvez quitter chaque shell avec la commande exit.

Mais lorsque vous ouvrez un nouveau terminal, une nouvelle session SSH ou un nouveau screen, cela créé un nouveau processus bash.
Toutes les nouvelles commandes passées par l’utilisateur que ce soit dans le terminal ou via un script seront des processus enfants de ce dernier.

Le processus bash dans Linux

Qu’est-ce qu’un script Bash

Un script Bash est un ensemble de commandes se trouvant dans un fichier texte brut. Il s’agit d’un mélange de commandes qui seraient normalement tapées dans la ligne de commande (par exemple, ls ou cp) au lieu d’elles-mêmes. Bash est le shell Bash par défaut de certains systèmes.

Par exemple, ci-dessous, le script débute en indiquant l’interpréteur Bash.
Puis on déclare une variable que l’on utilise dans la commande echo.

#!/bin/bash
jesuisunevariable="le monde"

echo Hello $jesuisunevariable

On peut ensuite enregistrer le fichier sous le nom script.sh.
Puis on le rend exécutable grâce à la commande chmod :

chmod +x script.sh

Enfin on peut l’exécuter comme ceci :

./script.sh

Bien sûr, ici le script est très simple mais bash est relativement puissant pour créer des scripts beaucoup plus complexes.

Le fichier .bashrc et .bash_profile

Comme tout programme, bash possède des fichiers de configuration au niveau système ou au niveau utilisateur.

Chaque fois que Bash est exécuté en mode interactif , il exécute lit et exécute /etc/profile (s’il existe) ou il appelle le fichier /etc/bash.bashrc Après avoir lu le fichier, il recherche ~/.bash_login, ~/.bash_profile, et ~/.profile.
Par exemple, l’utilisateur peut définir des alias, modifier les couleurs du prompt et bien d’autres paramètres.

Lorsque l’utilisateur quitte le Shell Bash, ce dernier lit et Il lira et exécute ~/.bash_logout.

Enfin lorsque Bash est exécute en Shell interactif sans login, seuls les fichiers ~/.bash_login, ~/.bash_profile sont lus.

Comment exécuter bash sur Windows

Vous pouvez accéder à bash directement dans Windows de plusieurs méthodes.
La première est d’utiliser WSL (Windows Subsystem for Linux). Ce sous-système permet d’installer une distribution Linux dans Windows.
On peut faire tourner la plupart des utilitaires, applications et outils en ligne de commande directement sur Windows.

L’autre méthode est d’utiliser cygwin qui émule aussi un terminal Linux dans Windows avec un accès à la plupart des utilitaires.
Pour cela, suivez ce tutoriel : Installer CygWin pour exécuter des commandes Linux dans Windows 10