在WSL中使用Gemini Cli时,.env配置文件读取失效问题

asasora
4
2026-03-20

在WSL中安装了Gemini Cli,在Windows11中使用CC-Switch管理gemini的api配置。但是在某些情况下,使用CC-Switch在不同的gemini api服务商之间切换配置会失效。

具体表现为:

我在目录 D:\code\test下启动命令行,进入WSL环境,启动gemini cli。我一开始使用的是A服务商,由于A服务商可能出现了些问题,无法正常使用,这时,我在CC-Switch中将配置切换到B服务商,重新启动gemini cli发送消息,gemini cli仍然调用的是A服务商提供的API渠道。并且,如果开启了CC-Switch的代理功能,会发现日志中看不到CC-Switch代理调用的记录。

排查解决:

我发现不管怎么切换CC-Switch,使用的都是A服务商渠道,于是开始排查.env配置文件,这时想起我在本地windows系统中也安装了gemini cli,并且配置的就是A服务商!随后,我进入 C:\Users\murasame\.gemini目录,修改其中的.env配置文件,将其指向C服务商。配置好后,我回到 D:\code\test目录下,启动命令行,进入WSL,启动gemini cli,再一次发送消息,果然,在C服务商的控制台中,我看到了调用记录。到此,问题已经找到了。我在WSL中安装的gemini cli并没有使用WSL系统 \home\asasora\.gemini目录中的.env配置文件,而是仍然使用windows系统中 C:\Users\murasame\.gemini目录下的.env配置文件!我的CC-Switch配置文件指向的也是 WSL:\home\asasora\.gemini目录,所以不管我怎么切换,都不会生效,也压根不会走CC-Switch的代理。

这是为什么呢?

查阅谷歌Gemini Cli的相关文档,我发现这么一段说明:

Persisting Environment Variables with .env Files

You can create a .gemini/.env file in your project directory or in your home directory. Creating a plain .env file also works, but .gemini/.env is recommended to keep Gemini variables isolated from other tools.

Important: Some environment variables (like DEBUG and DEBUG_MODE) are automatically excluded from project .env files to prevent interference with gemini-cli behavior. Use .gemini/.env files for gemini-cli specific variables.

Gemini CLI automatically loads environment variables from the first .env file it finds, using the following search order:

  1. Starting in the current directory and moving upward toward /, for each directory it checks:
    1. .gemini/.env
    2. .env
  2. If no file is found, it falls back to your home directory:
    • ~/.gemini/.env
    • ~/.env

Important: The search stops at the first file encountered—variables are not merged across multiple files.

也就是说,当我在 D:\code\test目录下启动WSL中的gemini cli时,此时在WSL中的目录结构是这样的:asasora@AsaSora:/mnt/d/code/test ,gemini cli会先查看当前test目录下是否存在.env配置文件,如果没有则从 /目录下一层一层查找,在WSL环境下,C:\Users\User\.gemini目录在/mnt目录下 asasora@AsaSora:/mnt/c/Users/murasame/.gemini ,由于某种原因,gemini cli并没有先检查 \home\asasora\.gemini目录,而是先找到了 /mnt/c/Users/murasame/.gemini这个目录下的.env配置文件,并完成加载,导致了配置文件失效的问题。

这个问题在claude code或者是codex中就不会出现,在WSL中使用gemini cli时,如果遇到这个问题,就只能乖乖手动修改一下 C:\Users\murasame\.gemini中的配置文件了。