我正在使用多个 odbc 驱动程序连接到 hive 和 impala,并且大多数文档都指出 kerberos 票证位置应由环境变量 KRB5CCNAME 定义,例如 C:\temp\kr5ccache
此设置工作正常,但我想为多个用户提供使用不同凭据连接 ODBC 的可能性,因此票证缓存位置不能是静态的,而应该是用户特定的。所以我的问题是如何在 Windows Server 2012 中设置一个环境变量,该变量对于每个用户都是不同的。类似于 unix ~/.tmp/krb5ccache。
谢谢
答案1
Unix/Linux shell/bash 中作为参数第一个字符出现的波浪~
号与环境变量相同$HOME
。Windows 等效于%USERPROFILE%
。
您可以使用以字符串开头的任何用户变量。在打开的cmd
窗口中尝试您自己的变量:set | find /I "%USERNAME%"
输出如下所示
APPDATA=C:\Users\{username}\AppData\Roaming
LOCALAPPDATA=C:\Users\{username}\AppData\Local
PSModulePath=C:\Users\{username}\Documents\WindowsPowerShell\Modules
USERPROFILE=C:\Users\{username}
因此,您可以使用类似以下代码片段
set "KRB5CCNAME=%USERPROFILE%\kr5ccache"
rem ensure that above directory exists:
2>NUL md "%KRB5CCNAME%"