如何查找当前 Node.js 进程运行的用户 shell (bash, zsh 等)?是否可以在不运行子进程的情况下找到它(例如像这样)?
bash
zsh
ps -p $$
process.env.SHELL 应该为您提供用户 shell 的路径。
process.env.SHELL
/bin/bash
echo $0
ZSH_VERSION
var shell = process.env.ZSH_VERSION ? "zsh" : process.env.SHELL
process.env.shell
zsh
环境下尝试了它,但仍然输出/bin/bash
... 但是,echo $0
输出zsh
。 - Ionică BizăuZSH_VERSION
变量:var shell = process.env.ZSH_VERSION ? "zsh" : process.env.SHELL
。这在非 zsh 环境中不存在/不应该存在。 - Ionică Bizăuprocess.env.shell
不是正确的答案。它返回的是默认 shell 的路径,而不是当前 shell 的路径。更多细节请参考这个回答:https://dev59.com/_HA75IYBdhLWcg3wYH7I遗憾的是,我不知道在 node-land 中的正确答案是什么。 - masukomiprocess.env.SHELL
并不适用于所有情况(尽管我猜它在99.9%的情况下都有效)。不幸的是,除了一些复杂的启发式方法之外,没有真正的替代方案。或者用户应该学会如何更改他们的交互式 shell ;) (是的,我意识到这并不总是可能的) - robertklep