关于设置永久环境变量有很多重复的问题,但没有关于为特定文件夹设置它们的问题。
那么,如何为特定文件夹设置环境变量?
澄清:我希望我的CUSTOM_ENV_VAR
仅在特定目录中工作时才激活.../custom_dir/
。因此,当我在文件夹中启动程序时,程序会使用它CUSTOM_ENV_VAR
,而当我在外部启动时 - 程序不会使用它。
答案1
使用direnv
安装direnv
,这是一个用于此目的的工具,它是一个静态链接的可执行文件,可以挂接到你的 shell(csh、bash 等)
sudo apt-get install direnv && echo "eval "$(direnv hook bash)"" >> ~/.bashrc
现在,在您想要设置环境变量的任何文件夹中,添加一个.direnvrc
必须具有有效 bash 语法的文件。例如,您可以通过将以下内容设置为:来加载 pyenv 的版本管理以及您自己的变量.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";
您可以在他们的维基百科
谢谢@ChrisKuehl在建议的评论中
另一种替代方法是覆盖PROMPT_COMMAND
(如评论中所建议的@steeldriver)指向加载环境变量的函数,方法是将类似下面的内容添加到.bashrc
prmfn() {
if [ "$PWD" == "yourdirectorypath" ]; then
export CUSTOM_ENV_VAR=value
else
unset CUSTOM_ENV_VAR
fi
}
export PROMPT_COMMAND=prmfn
现在,当你输入时yourdirectorypath
,它会自动设置CUSTOM_ENV_VAR
,当你退出时,它会unset
(删除)变量,因此该变量仅在当前目录为时可用yourdirectorypath