如何在 zsh 的节点中使用 process.env 获取 shell 数组
How can I get shell array using process.env in node in zsh
在 zsh(v5.8) 中,我无法使用 node.js(v12.20.1) 中的 process.env
读取 shell 环境变量数组。
- ./env.js
console.log(process.env);
# zsh
export TEST1=(xxx yyy)
export TEST2=zzz
node env.js
# results
{
TEST2: 'zzz'
}
# bash
export TEST1=(xxx yyy)
export TEST2=zzz
node env.js
# results
{
TEST1: '(xxx yyy)',
TEST2: 'zzz',
}
那么,如何在 zsh 中获取 node.js 中的 shell 数组。
zsh 变量支持数组类型,环境不支持数组
# example
# '-x' options, automatic export to the environment
typeset TEST1=(xxx yyy)
typeset -x TEST2=(aaa bbb) # ignore -x because, TEST2 type is arrays
typeset TEST3=xxx
typeset -x TEST4=aaa
echo $TEST1 $TEST2 $TEST3 $TEST4
# print all
xxx yyy aaa bbb xxx aaa
env
# print TEST4
{
TEST4=aaa
}
不再直接在zsh上处理数组类型,而是换成在node上解决的方式
在读入 string format
而不是数组类型后,我通过 split()
.
解决了它
- env.js
console.log(process.env);
const CONST_TEST1 = process.env.TEST1.split(' ');
console.log(CONST_TEST1 instanceof Array);
console.log(CONST_TEST1);
# zsh
export TEST1='xxx yyy'
node env.js
# results
{
TEST1: 'xxx yyy',
_: '/Users/kmk/.nvm/versions/node/v12.20.1/bin/node'
}
true
[ 'xxx', 'yyy' ]
在 zsh(v5.8) 中,我无法使用 node.js(v12.20.1) 中的 process.env
读取 shell 环境变量数组。
- ./env.js
console.log(process.env);
# zsh
export TEST1=(xxx yyy)
export TEST2=zzz
node env.js
# results
{
TEST2: 'zzz'
}
# bash
export TEST1=(xxx yyy)
export TEST2=zzz
node env.js
# results
{
TEST1: '(xxx yyy)',
TEST2: 'zzz',
}
那么,如何在 zsh 中获取 node.js 中的 shell 数组。
zsh 变量支持数组类型,环境不支持数组
# example
# '-x' options, automatic export to the environment
typeset TEST1=(xxx yyy)
typeset -x TEST2=(aaa bbb) # ignore -x because, TEST2 type is arrays
typeset TEST3=xxx
typeset -x TEST4=aaa
echo $TEST1 $TEST2 $TEST3 $TEST4
# print all
xxx yyy aaa bbb xxx aaa
env
# print TEST4
{
TEST4=aaa
}
不再直接在zsh上处理数组类型,而是换成在node上解决的方式
在读入 string format
而不是数组类型后,我通过 split()
.
- env.js
console.log(process.env);
const CONST_TEST1 = process.env.TEST1.split(' ');
console.log(CONST_TEST1 instanceof Array);
console.log(CONST_TEST1);
# zsh
export TEST1='xxx yyy'
node env.js
# results
{
TEST1: 'xxx yyy',
_: '/Users/kmk/.nvm/versions/node/v12.20.1/bin/node'
}
true
[ 'xxx', 'yyy' ]