Lad*_*lav 6 environment-variables
有很多关于设置永久环境变量的重复问题,但没有关于为特定文件夹设置它们的问题。
那么,如何为特定文件夹设置环境变量?
清除:我希望CUSTOM_ENV_VAR
仅在我在特定目录中工作时激活.../custom_dir/
。所以当我在文件夹中启动程序时,程序使用它CUSTOM_ENV_VAR
,当我在外面启动时 - 程序不使用它。
direnv
Install direnv
,这是一个用于此目的的工具,它是一个静态链接的可执行文件,可以挂接到您的 shell(csh、bash 等)
sudo apt-get install direnv && echo "eval "$(direnv hook bash)"" >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
现在到您想要设置环境变量的任何文件夹,添加一个.direnvrc
必须具有有效 bash 语法的文件。例如你的情况,你可以通过设置你.direnvrc
来加载pyenv的版本管理以及你自己的变量:
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";
Run Code Online (Sandbox Code Playgroud)
您可以在他们的wiki 上看到其他示例
感谢@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
Run Code Online (Sandbox Code Playgroud)
现在,当您输入时yourdirectorypath
,它会自动设置CUSTOM_ENV_VAR
,当您退出时,它会unset
(删除)该变量,因此该变量仅在当前目录为yourdirectorypath
归档时间: |
|
查看次数: |
845 次 |
最近记录: |