diff --git a/lib/util/fs/index.ts b/lib/util/fs/index.ts
index 3c0938380d9c9c00be995063917cfb8a0f412247..8015dfdf850d1f93a154e4ce82120dc31f1aad57 100644
--- a/lib/util/fs/index.ts
+++ b/lib/util/fs/index.ts
@@ -5,6 +5,7 @@ import * as fs from 'fs-extra';
 import { isAbsolute, join, parse } from 'upath';
 import { getAdminConfig } from '../../config/admin';
 import { logger } from '../../logger';
+import { getChildProcessEnv } from '../exec/env';
 
 export * from './proxies';
 
@@ -83,12 +84,16 @@ export async function ensureLocalDir(dirName: string): Promise<void> {
 }
 
 export async function ensureCacheDir(
-  dirName: string,
-  envPathVar?: string
+  adminCacheSubdir: string,
+  envCacheVar?: string
 ): Promise<string> {
-  const { cacheDir } = getAdminConfig();
-  const envCacheDirName = envPathVar ? process.env[envPathVar] : null;
-  const cacheDirName = envCacheDirName || join(cacheDir, dirName);
+  const { cacheDir: adminCacheDir } = getAdminConfig();
+  let envCacheDir = null;
+  if (envCacheVar) {
+    const env = getChildProcessEnv([envCacheVar]);
+    envCacheDir = env[envCacheVar];
+  }
+  const cacheDirName = envCacheDir || join(adminCacheDir, adminCacheSubdir);
   await fs.ensureDir(cacheDirName);
   return cacheDirName;
 }