web-dev-qa-db-fra.com

Comment définir une variable d'environnement utilisateur? (en permanence, pas de session)

Cela m'irrite. J'ai vu plusieurs suggestions (utilisant toutes des fichiers et une syntaxe différents) et aucune n'a fonctionné.

Comment définir une variable d'environnement pour un utilisateur spécifique? Je suis sur Debian Squeeze. Quelle est la syntaxe exacte que je devrais mettre dans le fichier pour faire ABC = "123"?

148
user4069

Vous devez mettre la déclaration dans les fichiers d'initialisation de votre Shell:

  • Si vous utilisez bash, ash, ksh ou un autre shell de style Bourne, vous pouvez ajouter

    ABC="123"; export ABC
    

    dans ton .profile fichier (${HOME}/.profile). C'est la situation par défaut sur la plupart des installations Unix, et en particulier sur Debian.

    Si votre shell de connexion est bash, vous pouvez utiliser .bash_profile (${HOME}/.bash_profile) ou .bash_login au lieu.

    Remarque: Si l'un de ces fichiers existe et que votre shell de connexion est bash, .profile n'est pas lu lorsque vous vous connectez via ssh ou sur une console texte, mais il peut toujours être lu à la place de .bash_profile si vous vous connectez depuis l'interface graphique. De plus, s'il n'y a pas de .bash_profile, puis utilisez .bashrc.

  • Si vous avez défini zsh comme shell de connexion, utilisez ~/.zprofile au lieu de ~/.profile.

  • Si vous utilisez tcsh, ajoutez

    setenv ABC "123"
    

    dans .login fichier (${HOME}/.login)

  • si vous utilisez un autre shell, consultez le manuel du shell pour définir les variables d'environnement et quels fichiers sont exécutés au démarrage du shell.

118
Matteo

Utilisation /etc/environment fichier pour définir les variables d'environnement. Ajoutez ensuite la ligne suivante à l'intérieur du /etc/environment fichier.

ABC="123"

Maintenant, la variable ABC sera accessible depuis toutes les sessions utilisateur. Pour tester la sortie de la variable, actualisez d'abord la variable d'environnement à l'aide de la commande

source /etc/environment

et courir echo $ABC.

49
Hokam

Il s'agit d'une procédure générale que vous pouvez utiliser pour à peu près n'importe quel shell. Dans tous les cas, vous devez savoir avec quel Shell l'utilisateur devrait normalement se connecter:

path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
Shell="$(basename -- "$path")"

Ensuite, vous devez déterminer quels fichiers dot ce Shell devrait normalement lire:

man $Shell

Un raccourci qui pourrait fonctionner est de lister les fichiers dot qui contiennent le nom du shell:

ls ~/.*${Shell}*

Si vous souhaitez vérifier si l'un des fichiers est réellement lu lors de la connexion, vous pouvez simplement imprimer le nom du fichier dans chacun d'eux, par exemple:

echo .bashrc

Lorsque vous vous connectez, vous devez alors voir quels fichiers sont lus et vous pouvez décider lequel modifier. Attention, vous ne devez pas essayer d'utiliser echo "$0" ou similaire, car la valeur de $0 dépend de la façon dont le shell traite les fichiers dot et peut être trompeur.

Quand il s'agit de déclarer la variable "en permanence", notez que cela ne s'étend qu'à la session. Il n'y a aucun moyen d'accéder à la valeur d'une variable sans session, elle n'a donc aucune signification en dehors de celle-ci. Si vous voulez dire "lecture seule", cela dépend du Shell, et dans Bash vous pouvez utiliser:

declare -r VAR

s'il a déjà une valeur, ou

declare -r VAR=value

pour l'attribuer en même temps. Tous les obus n'ont pas cette fonctionnalité.

Pour déclarer une variable dans la plupart des shells, vous devez utiliser un nom de variable ([A-Za-z_][A-Za-z0-9_]*), suivi d'un signe égal (et pas d'espaces autour du signe égal), puis d'une valeur (de préférence entre guillemets sauf si la valeur est un simple [A-Za-z0-9_]+). Par exemple:

name="John Doe"
ip=127.0.0.1
HORRIBLE=1
9
l0b0

Utilisez l'exportation.

export ABC="123"

Pour vérifier s'il est défini, utilisez

env

et/ou

env | grep ABC

Pour l'ajouter définitivement, ajoutez-le à votre ~/.bashrc fichier.

export ABC="123"
5
whoami

La commande exacte est:

echo 'export ABC = "123"' >> ~/.profile
2

La meilleure façon qui a fonctionné pour moi est de modifier le fichier .bashrc dans le shell BASH.

utilisez ceci par exemple:

  1. ouvrez votre fichier .bashrc
  2. ajoutez cette ligne:

    export <VARIABLE> = "<ANY PATH/VALUE you want>"
    

    par exemple : export HOME = "/home/user/"

    N'oubliez pas d'utiliser "" comme utilisant ' ' ne fonctionnera pas et votre fichier bashrc signalera une erreur lors de l'approvisionnement.

  3. source dans la session en cours.

J'ai également essayé de modifier le fichier/etc/environment mais cela ne m'a pas permis de créer une nouvelle variable d'environnement et lorsque je l'ai obtenue, cela a provoqué une erreur indiquant que la variable définie était introuvable.

1
Ayushi Agarwal