Quelqu'un m'a dit que:
BASH n'est pas une variable d'environnement, c'est une variable shell
Quelle est la différence?
bash
command-line
environment-variables
Tom Brito
la source
la source
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.
la source
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:
Une autre façon de définir une variable d’environnement:
la source
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'environnementIl existe une différence. Les variables d'environnement et les variables d'environnement l'expliqueront mieux que je peux, mais en voici un extrait:
la source
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
la source
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 fichierSHELL 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: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).la source