Réponses:
Votre terminal exécute un shell (très probablement bash
), qui est celui qui demande vos commandes et les exécute.
Outre ce mode interactif, vous pouvez également utiliser votre shell pour exécuter des commandes à partir d'un fichier. Pour exécuter les commandes dans votre fichier, vous pouvez soit appeler le shell directement comme bash script
ou vous pouvez démarrer votre fichier avec un "shebang" #!/bin/bash
et le rendre exécutable ( chmod +x script
). Ensuite, vous pouvez traiter le script comme un binaire et l'exécuter par exemple comme ./script
ou le placer à un endroit où le shell le recherche. ( echo $PATH
)
Votre shell interactif et le shell utilisé pour fonctionner le sont probablement bash
. Du point de vue d'un "premier jour d'apprentissage linux", bash fonctionne exactement de la même manière dans les deux modes. - Beaucoup plus tard, vous pourriez tomber sur de légères différences. Si vous voulez vraiment en savoir plus, je vous suggère de lire man bash
et de rechercher des endroits mentionnant "interactif". (Vous pouvez rechercher une page de manuel en appuyant sur /
.)
Une chose importante à noter est que le script est exécuté comme un nouveau processus. Cela signifie notamment que les variables définies dans le script ne sont pas visibles dans le shell appelant.
$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$
Sans l'exportation a
n'est même pas visible pour le script interne.
En général, la réponse serait "non", les commandes en shell sont les mêmes dans les scripts, en syntaxe et en sémantique.
Mais il y a un tas de petites nuances liées à la configuration de l'environnement (quelles variables sont utilisées et à quoi elles sont définies).
le shell interactif de choix pour Linux est bash, mais les scripts utilisent souvent d'autres interprètes ( sh
, qui est un prédécesseur de bash
, ksh
qui est comparable à bash), vous devez donc prendre en compte le shell utilisé (le nom du shell actuel est traditionnellement tenu en variable SHELL
, essayez de taper echo $SHELL
).
il peut y avoir des différences dans la configuration du même interpréteur pour la session interactive et pour l'exécution du script.
Non. Un script est une liste de commandes que vous pouvez taper dans le terminal.
Vous pouvez coller la totalité d'un script dans le terminal, et le résultat sera le même que l'exécuter.
Inversement, vous pouvez "enregistrer" vos commandes de terminal à l'intérieur d'un fichier et le transformer en un script réutilisable et le partager avec votre famille et vos amis.
source script_file
. qui modifiera les vars ENV dans le contexte actuel. lors de l'exécution du script car ./script_file
ne modifiera pas l'ENV, sauf s'il export
est utilisé explicitement.
export
il n'est pas possible pour un script de modifier les variables du shell appelant. Il en va de même pour des choses comme PWD, des alias définis, des fonctions et des choses comme ça. Ils ne peuvent être modifiés que de manière interactive ou en recherchant un fichier. Mais oui, ce n'est probablement rien que quelqu'un trébuchera le premier jour. :)