$PATH 实际内容相如下
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/xxxx/.npm-global/lib/node_modules/http-server/bin:/Users/xxx/.npm-global/lib/node_modules/serve/bin
或者
/Users/xxxx/.nvm/versions/node/v8.11.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/mongodb/bin
但是在 electron 应用 内通过 execSync(
echo $PATH).toString()
或者 process.env.PATH
获取 就只有 /usr/bin:/bin:/usr/sbin:/sbin
这导致部分命令无法应用内执行。
有什么方法可以获取 $PATH 的完全体吗?
解决了。
这个事情导致的问题是--我在应用内使用 execSync() 之类的方法执行部分命令会提示 command not found :xx,
原因目前有两个,一是 app 内获取的环境变量(process.env.PATH)和系统环境变量不一致,解决方案是在执行 execSync 这类方法时,options 设置
第二个原因是使用了 nvm 做 node 的版本管理,nvm 会更新 $PATH,可以在执行具体命令前 先如下操作:
后续:
第二个 nvm 的方式需要改成在 使用他的进程内执行