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"?
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.
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
.
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
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"
La commande exacte est:
echo 'export ABC = "123"' >> ~/.profile
La meilleure façon qui a fonctionné pour moi est de modifier le fichier .bashrc dans le shell BASH.
utilisez ceci par exemple:
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.
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.