Je suppose que vous venez d'un environnement Windows. Je vais donc les opposer (je suis aussi un peu nouveau dans le domaine de Linux). J'ai trouvé la réponse d'un utilisateur à mon commentaire utile pour comprendre les choses.
Dans Windows, une variable peut être permanente ou non. Le terme variable d'environnement comprend une variable définie dans le cmd avec la commande SET, ainsi que lorsque la variable est définie dans l'interface graphique de Windows, donc définie dans le registre, et devient visible dans les nouvelles fenêtres cmd.
Par exemple, la documentation pour le set commande dans Windows "Affiche, définit ou supprime les variables d'environnement. Utilisé sans paramètres, set affiche les paramètres d'environnement actuels."
Dans Linux, set n'affiche pas les variables d'environnement. Il affiche les variables de l'interpréteur de commandes qu'il n'appelle pas/ne désigne pas comme des variables d'environnement. De même, Linux n'utilise pas set pour définir des variables (à l'exception des paramètres positionnels et des options de l'interpréteur de commandes, que j'explique en note à la fin), mais uniquement pour les afficher, et encore, uniquement pour afficher les variables de l'interpréteur de commandes. Windows utilise set pour le réglage et l'affichage, par exemple, set a=5
mais pas Linux.
Sous Linux, je suppose que vous pourriez faire un script qui définit les variables au démarrage, par exemple, /etc/profile
o /etc/.bashrc
mais sinon, ils ne sont pas permanents. Ils sont stockés dans la RAM.
Il existe une distinction dans Linux entre les variables de l'interpréteur de commandes et les variables d'environnement. Sous Linux, les variables de l'interpréteur de commandes ne sont présentes que dans l'interpréteur de commandes en cours et variables d'environnement sont dans ce shell et tous les shells enfants.
Vous pouvez afficher les variables du shell avec la commande set
(notez cependant que, contrairement à Windows, les variables ne sont pas définies sous Linux avec la commande set commande).
set -o posix; set
(faisant cela set -o posix
une première fois, permet de ne pas afficher trop de choses inutiles). Donc set
affiche les variables du shell.
Vous pouvez afficher les variables d'environnement avec la commande env
commandement.
Les variables shell sont définies avec, par exemple, simplement a = 5
.
Les variables d'environnement sont définies avec exporter . L'exportation définit également la variable shell.
Ici vous voyez la variable shell zzz set avec zzz = 5
et voir ce que cela donne quand on exécute set
mais elle n'apparaît pas comme une variable d'environnement.
Ici, nous voyons yyy
défini avec l'exportation, il s'agit donc d'une variable d'environnement. Et vous voyez qu'elle apparaît à la fois dans les variables de l'interpréteur de commandes et dans les variables d'environnement :
$ zzz=5
$ set | grep zzz
zzz=5
$ env | grep zzz
$ export yyy=5
$ set | grep yyy
yyy=5
$ env | grep yyy
yyy=5
$
Autres questions utiles :
Note : Un point qui développe un peu et corrige ce que j'ai écrit, est que, dans Linux bash, 'set' peut être utilisé pour définir des "paramètres positionnels" et des "options/attributs de l'interpréteur de commandes", et techniquement, ces deux éléments sont des variables, bien que l'attribut pages de manuel pourraient ne pas les décrire comme tels.
Mais, comme nous l'avons mentionné, set ne définit pas les variables du shell ou les variables d'environnement). Si vous faites set asdf
alors il met $1 à asdf, et si vous faites echo $1
vous voyez asdf .
Si vous le faites set a=5
il ne définira pas la variable a, égale à 5. Il définira le paramètre positionnel $1 égal à la chaîne de caractères "a=5". Donc, si vous avez déjà vu set a=5 sous Linux, c'est probablement une erreur, à moins que quelqu'un ne veuille réellement que la chaîne a=5, dans $1.
L'autre chose que Linux set peut définir, sont les options/attributs du shell. Si vous faites set -o vous verrez une liste d'entre eux. Et vous pouvez faire par exemple set -o verbose
off, pour activer le verbeux (d'ailleurs, la valeur par défaut est off, mais cela ne fait aucune différence). Ou vous pouvez faire set +o verbose
pour désactiver le verbiage. Windows ne dispose pas d'un tel usage pour sa commande set.