Quelle est la différence entre set
, env
, declare
et export
lorsque vous définissez une variable dans un shell Linux, par exemple bash
?
linux
bash
shell
shell-script
user3872279
la source
la source
Réponses:
Il semble que set et declare soient légèrement différents, set étant plus puissant.
Voir «déclarer» sous https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins déclarer: «Déclarez les variables et donnez-leur des attributs. Si aucun nom n'est donné, affichez les valeurs des variables au lieu.
Définissez "définir" sous https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin * set: "Cette fonction intégrée est si compliquée qu'elle mérite sa propre section. Set vous permet de modifier les valeurs des options du shell et définir les paramètres de position, ou pour afficher les noms et les valeurs des variables du shell. "
ENV est une variable d'environnement dans Bash: https://www.gnu.org/software/bash/manual/bash.html#Bash-Variables env est une commande Linux. Je pense que c'est une bonne référence: /unix/103467/what-is-env-command-doing
Je pensais que c'était une bonne explication de l'exportation: http://www.unix.com/302531838-post2.html
Aussi: https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins * export (de Bourne): "Marquez chaque nom à transmettre aux processus enfants de l'environnement."
Code emprunteur de l'URL ci-dessus:
la source
declare
etset
etenv
? exporter vs déclarer?Tout d'abord, vous devez comprendre cela
environment variables
et ceshell variables
n'est pas la même chose.Ensuite, vous devez savoir que les shells ont des attributs qui régissent leur fonctionnement. Ces attributs ne sont pas des variables d'environnement ni de shell.
Maintenant, pour répondre à votre question.
env
: sans aucune option, affiche les variables d'environnement actuelles avec leurs valeurs; Cependant, peut être utilisé pour définir la variable d'environnement pour une seule commande avec l'-i
indicateurset
: sans options, le nom et la valeur de chaque variable shell sont affichés * ~ à partir de l'exécutionman set
dans rhel; peut également être utilisé pour définir l' attribut shell . Cette commande NE définit PAS l' environnement ni la variable shell .declare
: sans aucune option, identique àenv
; peut également être utilisé pour définir la variable shellexport
: fait des variables d' environnement variables d'environnementEn bref:
set
ne définit pas de variables d'environnement ni de shellenv
peut définir des variables d'environnement pour une seule commandedeclare
définit les variables shellexport
fait des variables d'environnement des variables d'environnementREMARQUE
declare -x VAR=VAL
crée la variable shell et l'exporte également, ce qui en fait une variable d'environnement.la source