为什么 运行 `which` 在节点子进程中会导致不同的结果?
why does running `which` in a node child process result in different results?
当 运行 终端中的 which
命令(例如,which yarn
)时,我得到的结果与 运行 节点脚本时的结果不同(来自同一位置)调用 execSync('which yarn')
有人可以解释为什么吗?
tldr;
// in terminal
which yarn
// results in
/Users/xxx/.nvm/versions/node/v17.1.0/bin/yarn
// in node
execSync('which yarn')
// results in
/var/folders/0j/xxx/T/yarn--xxx/yarn
看起来 Node.js 进程是 运行 作为不同的用户(而不是你),并且该用户与你的帐户有不同的路径(或者至少不是运行 任何 .bashrc
或可能添加到路径中的特定于您的用户帐户的类似内容)。这是有道理的,因为您的结果指的是您的特定文件夹 (/Users/xxx/
),但来自 Node.js 的结果指的是所有用户共享的中心位置。
当 运行 终端中的 which
命令(例如,which yarn
)时,我得到的结果与 运行 节点脚本时的结果不同(来自同一位置)调用 execSync('which yarn')
有人可以解释为什么吗?
tldr;
// in terminal
which yarn
// results in
/Users/xxx/.nvm/versions/node/v17.1.0/bin/yarn
// in node
execSync('which yarn')
// results in
/var/folders/0j/xxx/T/yarn--xxx/yarn
看起来 Node.js 进程是 运行 作为不同的用户(而不是你),并且该用户与你的帐户有不同的路径(或者至少不是运行 任何 .bashrc
或可能添加到路径中的特定于您的用户帐户的类似内容)。这是有道理的,因为您的结果指的是您的特定文件夹 (/Users/xxx/
),但来自 Node.js 的结果指的是所有用户共享的中心位置。