Réponses:
$BASH
est une variable locale valide uniquement dans le shell actuel (bash).
Les variables d'environnement telles que $SHELL
sont valables à l'échelle du système. Dans un shell Bash actuel, $BASH
pointe sur le chemin d'exécution de bash , alors qu'il $SHELL
pointe sur le shell défini par défaut (qui peut avoir la même valeur).
Pour une explication des variables d'environnement, voir Aide sur les variables d'environnement dans Ubuntu.
Une variable d'environnement est un programme disponible globalement, dans un programme et des programmes enfants. Une variable shell est uniquement disponible dans le shell actuel. Pour rendre une variable shell disponible en tant que variable d'environnement, utilisez export VARNAME
(sans dollar $
).
Exemples de clarification:
$ SOME=VAR # define shell variable $SOME
$ echo $SOME
VAR
$ env | grep SOME # note: no output
$ export SOME # turn $SOME into an environment variable
$ env | grep SOME
SOME=VAR
Une autre façon de définir une variable d’environnement:
$ export ANOTHER=VALUE
$ echo $ANOTHER
VALUE
$ env | grep ANOTHER
ANOTHER=VALUE
export
ne définit pas nécessairement une variable d'environnement. stackoverflow.com/questions/7411455/…
export
définit une variable d'environnement pour les processus enfants. Le message que vous avez lié ne contredit pas cette réponse, pourriez-vous préciser pourquoi vous pensez que c'est faux?
export
définir absolument une variable d'environnement
Il existe une différence. Les variables d'environnement et les variables d'environnement l'expliqueront mieux que je peux, mais en voici un extrait:
Si une modification est apportée à une variable shell, celle-ci doit être explicitement "exportée" vers la variable d'environnement correspondante afin que tout sous-processus fourchu puisse voir la modification. Rappelez-vous que les variables de shell sont locales au shell dans lequel elles ont été définies.
Variable de shell: Court terme, Appliqué uniquement à l'instance actuelle du shell, Non applicable à l'échelle du système
Variable environnementale: utilisation à long terme, valable pour l'ensemble du système, globalement autorisée
Par convention, Shell Variable a pour nom Minuscule et Envn. Les variables sont écrites en majuscules
Pour répondre à cette question, essayez d’abord de comprendre la portée d’une variable.
Lorsque vous créez une nouvelle variable telle SOME_ENV_VARIABLE="testing.txt"
qu’elle réside dans le fichier SHELL scope
, cela signifie qu’elle peut être consultée par cette instance du shell où l’utilisateur est connecté. Lorsque l’instance change, par exemple, vous ouvrez un nouveau terminal ou vous changez le shell (par exemple, vous passez à csh
) vous ne pouvez pas accéder à cette variable.
Lorsque vous exportez cette variable, export SOME_ENV_VARIABLE
cette variable est désormais disponible dans la portée de l'environnement. Cela signifie que si vous modifiez le shell, vous pouvez toujours accéder à cette variable. Essayons de comprendre avec l'exemple suivant:
[vishrant@localhost]$ SOME_ENV_VARIABLE="testing.txt" #creating variable in bash shell
[vishrant@localhost]$ echo $SOME_ENV_VARIABLE
testing.txt
[vishrant@localhost]$ export SOME_ENV_VARIABLE #variable now available with environment
[vishrant@localhost]$ env | grep SOME_ENV_VARIABLE
SOME_ENV_VARIABLE=testing.txt
[vishrant@localhost]$ csh #changing shell
[vishrant@localhost ~/shell_scripting]$ echo $SOME_ENV_VARIABLE
testing.txt
[vishrant@localhost ~/shell_scripting]$ exit
exit #returned to parent shell
[vishrant@localhost]$ SOME_SHELL_VARIABLE="hello.txt"
[vishrant@localhost]$ csh
[vishrant@localhost ~/shell_scripting]$ echo $SOME_SHELL_VARIABLE
SOME_SHELL_VARIABLE: Undefined variable.
Analogie: supposons que vous possédiez un appartement de deux chambres et que vous le partagiez avec un autre colocataire. L’espace commun est accessible à tout le monde, mais pas à vos chambres. La variable d’environnement est semblable à un espace commun et la coquille, à une chambre, si vous voulez quelque chose dans cet espace commun, vous pouvez y accéder. être accessible par vous.
N'oubliez pas que si vous ouvrez un nouveau terminal, vous ne pourrez accéder à aucune des variables car vous modifiez cette instance . Pour cela, vous devez ajouter vos variables dans l’un .profile
ou l’ autre .bashrc
(si vous utilisez bash).