6 votes

Définir une variable d'environnement permanente pour un dossier

Il y a beaucoup de questions en double sur la définition de variables d'environnement permanentes, mais aucune question sur leur définition pour un dossier spécifique.

Alors, comment définir une variable d'environnement pour un dossier spécifique ?

Clarification : Je veux que mon CUSTOM_ENV_VAR pour activer seulement quand je travaille dans un répertoire spécifique .../custom_dir/ . Ainsi, lorsque je lance des programmes dans le dossier, les programmes utilisent ceci CUSTOM_ENV_VAR Quand je lance un programme extérieur, il n'est pas utilisé.

9voto

Amith KK Points 13017

Utilisation de direnv

Instalar direnv Il s'agit d'un exécutable lié statiquement qui s'accroche à votre Shell (csh, bash, etc.).

sudo apt-get install direnv && echo "eval "$(direnv hook bash)"" >> ~/.bashrc

Maintenant, dans le dossier dans lequel vous souhaitez que les variables d'environnement soient définies, ajoutez une balise .direnvrc qui doit avoir une syntaxe bash valide. Dans votre cas, par exemple, vous pouvez charger à la fois la gestion de la version de pyenv et vos propres variables en définissant le paramètre .direnvrc à :

use_python() {
  local python_root=$PYENV_ROOT/versions/$1
  load_prefix "$python_root"
  if [[ -x "$python_root/bin/python" ]]; then
    layout python "$python_root/bin/python"
  else
    echo "Error: $python_root/bin/python can't be executed."
    exit
  fi
}
export CUSTOM_VAR="xyz";

Vous pouvez voir d'autres exemples sur leur wiki

<sup>Merci à <a href="https://askubuntu.com/users/850195/chris-kuehl">@ChrisKuehl </a>dans les commentaires de la suggestion</sup>


Une autre approche alternative serait d'outrepasser l'option PROMPT_COMMAND (comme suggéré dans les commentaires par @steeldriver ) pour pointer vers une fonction qui charge votre variable d'environnement, en ajoutant quelque chose comme ceci à votre fichier .bashrc

prmfn() {
  if [ "$PWD" == "yourdirectorypath" ]; then
    export CUSTOM_ENV_VAR=value
  else
    unset CUSTOM_ENV_VAR
  fi
}

export PROMPT_COMMAND=prmfn

Maintenant, quand vous entrez yourdirectorypath il mettra automatiquement CUSTOM_ENV_VAR quand tu en sortiras, il y aura unset (supprimer) la variable, donc cette variable n'est disponible que lorsque le répertoire courant est yourdirectorypath

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X