« Shell Unix » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
m Articles connexes : commandes unix
 
(76 versions intermédiaires par 50 utilisateurs non affichées)
Ligne 1 :
[[Fichier:Linux command-line. Bash. GNOME Terminal. screenshot.png|vignette|Shell Bash sur Linux]]
{{Ebauche|informatique}}
Un '''shell Unix''', aussiest nomméun '''[[Interfaceinterpréteur ende lignecommandes]] dedestiné commandeaux [[systèmes d'exploitation]] [[Unix''',]] estet unde [[shelltype (informatique)|shellUnix]] destinéqui aupermet d'accéder aux fonctionnalités internes du [[système d'exploitation. Il se présente sous la forme d'une [[interface en ligne de commande]] accessible depuis la [[UnixConsole système|console]] etou deun [[typeterminal Unixinformatique|terminal]]. L'utilisateur lance des commandes sous forme d'une entrée texte exécutée ensuite par le shell. Dans les différents systèmes d'exploitation [[Microsoft Windows]], le programme analogue est [[command.com]], ou [[cmd.exe]].
 
Les systèmes d'exploitation de type [[Unix]] disposent le plus souvent d'un shell. À l'origine, l'[[interpréteur de commandes]] [[Valeur par défaut|par défaut]] était [[Bourne shell|sh]], qui donna naissance à de nombreuses variantes, dont [[csh]], étendu en [[tcsh]], ou [[Korn shell|ksh]], ou encore [[rc (shell)|rc]]... Mais aujourd'hui [[Bourne-Again shell|bash]], s'inspirant de [[Bourne shell|sh]], [[Korn shell|ksh]], et [[csh]], est le shell le plus répandu, bien qu'il existe d'autres interpréteurs de commandes, comme [[zsh]], ou [[Almquist shell|ash]].
Les systèmes d'exploitation de type [[Unix]] disposent le plus souvent d'un shell. Celui-ci est utilisable en conjonction avec un [[Terminal informatique|terminal]] (souvent virtuel).
A l'origine, l'[[interpréteur]] de commandes par défaut était [[Bourne shell|sh]], qui évolua en de nombreuses versions, dont [[csh]], étendu en [[tcsh]], ou [[ksh]], ou encore [[rc (shell)|rc]]... Mais aujourd'hui [[Bourne-Again shell|bash]], s'inspirant de [[Bourne shell|sh]], [[ksh]], et [[csh]], est le shell le plus répandu, bien qu'il existe d'autres interpréteurs de commandes, comme [[zsh]], ou [[Almquist shell|ash]].
 
== Historique des shellshells Unix ==
Le premier shell est le {{lien|fr=Thompson shell|lang=en}} apparu en 1971 avec la première version d’[[Unix]] et écrit par [[Ken Thompson]], l'un des créateurs d'[[Unix]]. Il est remplacé par le [[Bourne shell]], écrit par [[Stephen Bourne]], en 1977 pour la version 7 d'[[Unix]].
{{...}}
 
En 1978, [[Bill Joy]], alors étudiant à l'[[Université de Californie à Berkeley]], crée [[csh]] (C shell), une évolution du shell dont la syntaxe s'inspire de celle du langage C. Il permet notamment la réutilisation de l'historique des commandes. Une version plus moderne du [[csh]] est ensuite publiée sous le nom [[tcsh]].
 
Le [[Korn shell]] (ksh) est publié en 1983 par [[David Korn]]. Il est compatible avec le [[Bourne shell]], reprend certaines fonctionnalités de [[csh]] et ajoute des fonctions de scripts avancées disponibles dans des langages plus évolués tels que le [[Perl (langage)|Perl]].
 
Le [[Bourne-Again shell]] (bash) apparait quant à lui en 1988. Il est écrit par Brian Fox pour la [[Free Software Foundation]] dans le cadre du projet [[GNU]]. C'est le shell de nombreuses implémentations libres d'[[Unix]], telles que les systèmes [[Linux|GNU/Linux]]. Il est compatible avec le [[Bourne shell]] dont il se veut une implémentation libre.
 
[[Paul Falstad]] crée [[zsh]] en 1990 alors qu'il est étudiant à l'[[université de Princeton]]. Ce shell reprend les fonctions les plus pratiques de [[Bourne-Again shell|bash]], [[csh]], [[tcsh]].
 
== ExemplesShells ==
* Shell de [[Stephen Bourne]]
** [[Bourne shell]] (sh)
** [[Bourne-Again shell]] (bash)
* [[Cshcsh]] : C shell
** [[tcsh]] (Tenex C shell, version moderne du csh)
* Shell de {{lien|fr=[[David Korn|lang=en}}]] : [[Korn shell]] (ksh)
* Shell de {{lien|fr=[[Kenneth Almquis|lang=en}}Almquist]], utilisé lorsqu'il est nécessaire d'avoir un shell prenant peu de place sur le disque, clone de la variante SVR4 du Bourne shell;
** [[Ash shell|Ash]] (Almquist SHell)
** [[Debian Almquist shell|Dash shell]] ([[Debian]] Almquist SHellShell)
* [[Zsh|Z Shell|Zsh]] (zsh), reprenant les fonctions les plus pratiques de bash, ksh et tcsh.
* [[Friendly Interactive Shell|fish]]
 
== Comparatif ==
{{...}}
 
== Gestion des entrées/sorties et redirection ==
Les shells permettent de réaliser des redirections. Une redirection consiste à rediriger l'entrée ou la sortie d'une commande vers une autre commande ou un fichier.
{{...}}
 
=== Redirection droite simple ===
== Notes et références de l'article ==
Syntaxe :
<syntaxhighlight lang="bash"> commande > fichier </syntaxhighlight>
Le résultat de l'invocation de la commande <code>commande</code> sera écrit dans le fichier <code>fichier</code>, en écrasant le précédent contenu.
 
Exemple :
{{Lien web |url=http://www.softlab.ntua.gr/facilities/documentation/unix/shelldiff.html
<syntaxhighlight lang="bash">
$: cat file
Welcome
$: echo "Hello world" > file
$: cat file
Hello world
</syntaxhighlight>
 
=== Redirection droite double ===
Syntaxe :
<syntaxhighlight lang="bash"> commande >> fichier </syntaxhighlight>
Le résultat de l'invocation de la commande <code>commande</code> sera écrit dans le fichier <code>fichier</code>, à la suite des données déjà présentes.
 
Exemple :
<syntaxhighlight lang="bash">
$: cat file
Welcome
$: echo "Hello world" >> file
$: cat file
Welcome
Hello world
</syntaxhighlight>
 
=== Redirection gauche simple ===
Syntaxe :
<syntaxhighlight lang="bash"> commande < fichier </syntaxhighlight>
La commande <code>commande</code> va lire le contenu du fichier <code>fichier</code> au lieu de lire sur l'entrée standard (clavier).
 
Exemple :
<syntaxhighlight lang="bash">
$: cat < file
Welcome
</syntaxhighlight>
 
=== Redirection gauche double ===
Syntaxe :
<syntaxhighlight lang="bash"> commande << END </syntaxhighlight>
La commande <code>commande</code> va lire sur l'entrée standard jusqu'à ce que le mot suivant la double redirection soit rencontré.
 
Exemple :
<syntaxhighlight lang="bash">
$: cat << TOTO
? foo
? bar
? moomoo
? TOTO
foo
bar
moomoo
</syntaxhighlight>
 
=== Pipe ===
Syntaxe :
<syntaxhighlight lang="bash"> commande_1 | commande_2 </syntaxhighlight>
Le résultat de la commande <code>commande_1</code> va être redirigé dans l'entrée de la seconde commande <code>commande_2</code>.
 
Exemple :
<syntaxhighlight lang="bash">
$: echo "Hello world" | grep -o "Hello"
Hello
</syntaxhighlight>
 
== Fichier de configuration ==
{| class="wikitable floatleft" style="text-align: center; margin-right: 2em;"
|-
||
!sh
!ksh
!csh
!tcsh
!bash
!zsh
|-
|style="text-align:left;"|<tt>/etc/.login</tt>
|
|
|login
|login
|
|
|-
|style="text-align:left;"|<tt>/etc/csh.cshrc</tt>
|
|
|yes
|yes
|
|
|-
|style="text-align:left;"|<tt>/etc/csh.login</tt>
|
|
|login
|login
|
|
|-
|style="text-align:left;"|<tt>~/.tcshrc</tt>
|
|
|
|yes
|
|
|-
|style="text-align:left;"|<tt>~/.cshrc</tt>
|
|
|yes
|yes{{Efn|only if <tt>~/.tcshrc</tt> not found}}
|
|
|-
|style="text-align:left;"|<tt>~/etc/ksh.kshrc</tt>
|
|int.
|
|
|
|
|-
|style="text-align:left;"|<tt>/etc/sh.shrc</tt>
|int.{{Efn|Newer versions of the Bourne Shell only}}
|
|
|
|
|
|-
|style="text-align:left;"|<tt>$ENV (typically ~/.kshrc)</tt><ref>SCO Unix Group, [http://unix.harley.com/instructors/timeline.html SCO Unixware 7 documentation, 22 Apr 2004, retrieved 18 Oct 2012].</ref>
|int.{{Efn|Available on systems that support the "User Portability Utilities option"; value of the variable must be an ''absolute'' path, and it is ignored "if the user's real and effective user IDs or real and effective group IDs are different."<ref>{{lien web|langue=en|url=http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_05_03|titre=Shell Command Language|série=opengroup.org|consulté le=15 juin 2015}}</ref>}}{{Efn|$ENV is $HOME/.shrc in newer versions of the Bourne Shell}}
|int.
|
|
|int.{{Efn|Same behavior as <tt>sh</tt>, but only if invoked as <tt>sh</tt> (bash 2+) or, since bash 4.2, also if invoked ''explicitly'' in POSIX compatibility mode (with options <tt>--posix</tt> or <tt>-o posix</tt>)<ref>{{lien web|langue=en|url=http://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html|titre=Bash Reference Manual: Bash Startup Files|série=gnu.org|consulté le=15 juin 2015}}</ref>.}}
|
|-
|style="text-align:left;"|<tt>~/.login</tt>
|
|
|login
|login
|
|
|-
|style="text-align:left;"|<tt>~/.logout</tt>
|
|
|login
|login
|
|
|-
|style="text-align:left;"|<tt>/etc/profile</tt>
|login
|login
|
|
|login
|login{{Efn|name="zsh profiles"|Only in sh/ksh compatibility mode (when invoked as bash, sh, ksh)}}
|-
|style="text-align:left;"|<tt>~/.profile</tt>
|login
|login
|
|
|login{{Efn|name="bash profiles"|in fact, the first readable of <tt>~/.bash_profile</tt>, <tt>~/.bash_login</tt> and <tt>~/.profile</tt>; and only <tt>~/.profile</tt> if invoked as <tt>sh</tt> or, as of at least Bash 4.2, if invoked ''explicitly'' in POSIX compatibility mode (with options <tt>--posix</tt> or <tt>-o posix</tt>)}}
|login{{Efn|name="zsh profiles"}}
|-
|style="text-align:left;"|<tt>~/.bash_profile</tt>
|
|
|
|
|login{{Efn|name="bash profiles"}}
|
|-
|style="text-align:left;"|<tt>~/.bash_login</tt>
|
|
|
|
|login{{Efn|name="bash profiles"}}
|
|-
|style="text-align:left;"|<tt>~/.bash_logout</tt>
|
|
|
|
|login
|
|-
|style="text-align:left;"|<tt>~/.bashrc</tt>
|
|
|
|
|int.+n/login
|
|-
|style="text-align:left;"|<tt>/etc/zshenv</tt>
|
|
|
|
|
|yes
|-
|style="text-align:left;"|<tt>/etc/zprofile</tt>
|
|
|
|
|
|login
|-
|style="text-align:left;"|<tt>/etc/zshrc</tt>
|
|
|
|
|
|int.
|-
|style="text-align:left;"|<tt>/etc/zlogin</tt>
|
|
|
|
|
|login
|-
|style="text-align:left;"|<tt>/etc/zlogout</tt>
|
|
|
|
|
|login
|-
|style="text-align:left;"|<tt>~/.zshenv</tt>
|
|
|
|
|
|yes
|-
|style="text-align:left;"|<tt>~/.zprofile</tt>
|
|
|
|
|
|login
|-
|style="text-align:left;"|<tt>~/.zshrc</tt>
|
|
|
|
|
|int.
|-
|style="text-align:left;"|<tt>~/.zlogin</tt>
|
|
|
|
|
|login
|}
{{clr}}
== Notes et références ==
=== Notes ===
{{Références|group="note"}}
 
=== Références ===
{{Références}}
* {{Lien web |url=http://www.softlab.ntua.gr/facilities/documentation/unix/shelldiff.html
|titre=UNIX shell differences
|auteur=Brian Blackmore
|consulté le={{date|613|novembrefévrier|20072012}} }}
 
== Voir aussi ==
=== Articles connexes ===
* [[Interpréteur de commandes]]
* [[Commandes Unix]]
* [[Shell (informatique)]]
* [[Reverse shell]]
 
{{Palette |Shell|Langages de programmation}}
{{portail|informatique|programmation informatique}}
 
[[Catégorie:Shell Unix| ]]
 
[[bn:ইউনিক্স শেল]]
[[ca:Shell d'Unix]]
[[cs:Unixový shell]]
[[da:Unix-skal]]
[[de:Unix-Shell]]
[[en:Unix shell]]
[[es:Shell de UNIX]]
[[hu:Unix rendszerhéj]]
[[ja:シェル]]
[[ko:유닉스 셸]]
[[nn:Unix-skal]]
[[no:Unix-skall]]
[[ru:Командная оболочка UNIX]]
[[th:เชลล์ยูนิกซ์]]
[[uk:Командна оболонка Unix]]
[[zh:Unix shell]]