Ceci m'énerve. J'ai vu plusieurs suggestions (toutes utilisant des fichiers et une syntaxe différents) et aucune d'entre elles 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"?
environment-variables
path
Gilles
la source
la source
.bashrc
est le lieu principal pour cela..bash_profile
contient quelque chose comme[[ -f ~/.bashrc ]] && . ~/.bashrc
.Réponses:
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
dans votre
.profile
dossier (${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 à la.bash_login
place.Remarque: Si l'un de ces fichiers existe et que votre shell de connexion est en bash, il
.profile
n'est pas lu lorsque vous vous connectez via ssh ou sur une console de saisie, mais il peut quand même être lu à la place.bash_profile
si vous vous connectez à partir de l'interface graphique. En outre, s'il n'y a pas.bash_profile
, alors utilisez.bashrc
.Si vous avez défini zsh comme shell de connexion, utilisez à la
~/.zprofile
place de~/.profile
.Si vous utilisez tcsh, ajoutez
dans le
.login
fichier (${HOME}/.login
)Si vous utilisez un autre shell, consultez le manuel du shell pour savoir comment définir les variables d'environnement et quels fichiers sont exécutés au démarrage du shell.
la source
su user
est de changer la propriété du shell actuel en le nom d'utilisateur arg, tout en conservant le répertoire de base et l'environnement de l'utilisateur appelant. Pour entrer dans un shell de manière à devenir le nouvel utilisateur et à obtenir tous ses paramètres d'environnement ($ PATH, $ HOME, $ ABC, etc.), vous devez passer un - en tant que premier argument de su.su - username
va accomplir ce que vous demandez.man su
)su
en premier lieu? Ne venez-vous pas de créer un compte appartenant à la racine.profile
qui ne peut pas être utilisé par l'utilisateur?.profile
tous les shells compatibles Bourne lisent, vous ne devez pas écrire la syntaxe Bash dans ce fichier. En particulier,export VARIABLE=value
doit être refondu dansVARIABLE=value; export VARIABLE
.Utilisez
/etc/environment
fichier pour définir les variables d'environnement. Ajoutez ensuite la ligne suivante dans le/etc/environment
fichier.Maintenant, la variable ABC sera accessible à partir de toutes les sessions utilisateur. Pour tester la sortie de variable, commencez par actualiser la variable d'environnement à l'aide de la commande
et courir
echo $ABC
.la source
/etc/environment
ne prend pas en charge la syntaxe complète bash, ce que j'ai découvert à la dure. Par exemple, mettrePATH="/usr/bin:/usr/sbin"
et fairePATH="$PATH:/foo/bar"
sur une ligne suivante ne fonctionnera pas/etc/environment
, même si j'avais redémarré le terminal bash ou tapésource /etc/environment
. Donc, si vous rencontrez des problèmes où la variable d'environnement ne se perpétue pas, essayez de redémarrer.C'est 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 à quel shell l'utilisateur se connectera normalement avec:
Ensuite, vous devez déterminer quels fichiers de points ce shell devrait normalement lire:
Un raccourci qui pourrait fonctionner est de lister les fichiers contenant le nom du shell:
Si vous voulez 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:
Lors de la connexion, vous devriez alors voir quels fichiers sont en train d'être lus et décider lequel modifier. Attention, vous ne devriez pas essayer d’utiliser
echo "$0"
ou d’autres choses semblables, car la valeur de$0
dépend de la façon dont le shell traite les fichiers point et pourrait être trompeuse.Quand il s'agit de déclarer la variable "de manière permanente", notez que cela ne concerne que 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 "en lecture seule", cela dépend du shell, et dans Bash, vous pouvez utiliser:
s'il a déjà une valeur, ou
l'assigner en même temps. Tous les obus ne possèdent pas cette fonctionnalité.
Pour déclarer une variable dans la plupart des shells, vous devez utiliser une variable name (
[A-Za-z_][A-Za-z0-9_]*
), suivie d'un signe égal (et d' aucun espace autour du signe égal), puis d'une valeur (de préférence entre guillemets, à moins que la valeur ne soit simple[A-Za-z0-9_]+
). Par exemple:la source
Utilisez export.
Pour vérifier si elle est définie, utilisez
et / ou
Pour l'ajouter définitivement, ajoutez ceci à votre
~/.bashrc
fichier.la source
permenate
et paspermenently
: Dbashrc
permenate
? tu veux direpermanent
?La commande exacte est:
la source
~/.profile
et (b) laisse de l'espace avant et après=
?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:
par exemple :
export HOME = "/home/user/"
N'oubliez pas
""
que l'utilisation' '
ne fonctionnera pas et que votre fichier bashrc signalera une erreur lors du sourcing.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 m'a incité à indiquer que la variable définie est introuvable.
la source