例如,是否可以在 Git Bash 中设置实际的 Windows 环境变量?我知道你通常可以通过 Git Bash 设置环境变量,例如
FOOBAR=foo; export FOOBAR;
但这些环境变量仅在 Git Bash 环境中可用,在 Windows 中通常不可用。因此,如果您随后打开常规 Windows 命令提示符并执行
echo %FOOBAR%
它不会输出foo
。
提出这个问题的原因是:我在 Windows 中使用 bash 脚本启动 SSH 代理~/.bashrc
。这样我就可以在 Git Bash 中使用我的 SSH 密钥连接到我可以访问的任何 SSH 服务器。但是,任何未在 Git Bash 中运行的应用程序都无法访问已经运行的 SSH 代理,因为SSH_AUTH_SOCK
环境变量在 Git Bash 之外不可用。
我知道在这种情况下的解决方案可能是在 Windows 中运行 SSH 代理”天生地“(然后我希望/假设 SSH 代理也可以在 Git Bash 上使用),但我仍然很好奇您是否可以在 Git Bash 内部设置环境变量——这也可以在系统的其余部分使用。
//编辑:我还在 Git Bash 上尝试了以下操作:
cmd //c set FOOBAR=foo
(看这里为什么需要使用双斜杠),但之后我打开 CMD 时仍然没有运气:
echo %FOOBAR%
%FOOBAR%
答案1
一个解决方案是使用
setx FOOBAR foo
然而,这将设定一个永恒的用户环境变量。在我的情况下,这没问题。每次启动 Git Bash(也会启动 SSH 代理)时,脚本现在还会SSH_AUTH_SOCK
通过以下方式将环境变量设置为用户环境变量:
setx SSH_AUTH_SOCK ${SSH_AUTH_SOCK}