diff --git a/src/vs/base/node/env.ts b/src/vs/base/node/env.ts index 1d801a661d9af23692fb9901bfa22689dd8cd7dd..b7c78d6980330c19867c35d56f2f679374506d49 100644 --- a/src/vs/base/node/env.ts +++ b/src/vs/base/node/env.ts @@ -19,7 +19,8 @@ export function getUserEnvironment(): TPromise { } return new TPromise((c, e) => { - let child = cp.spawn(process.env.SHELL, ['-ilc', 'env'], { + // Use --null and split by '\0' as splitting by '\n' breaks multi-line environment variables + let child = cp.spawn(process.env.SHELL, ['-ilc', 'env', '--null'], { detached: true, stdio: ['ignore', 'pipe', process.stderr], }); @@ -37,7 +38,7 @@ export function getUserEnvironment(): TPromise { let result: IEnv = Object.create(null); - buffer.split('\n').forEach(line => { + buffer.split('\0').forEach(line => { let pos = line.indexOf('='); if (pos > 0) { let key = line.substring(0, pos);