使用Node.js获取当前的shell

3

如何查找当前 Node.js 进程运行的用户 shell (bash, zsh 等)?是否可以在不运行子进程的情况下找到它(例如像这样)?

ps -p $$
1个回答

6

process.env.SHELL 应该为您提供用户 shell 的路径。


3
我在 zsh 环境下尝试了它,但仍然输出 /bin/bash... 但是,echo $0 输出 zsh - Ionică Bizău
2
我们可以检查 ZSH_VERSION 变量:var shell = process.env.ZSH_VERSION ? "zsh" : process.env.SHELL。这在非 zsh 环境中不存在/不应该存在。 - Ionică Bizău
process.env.shell 不是正确的答案。它返回的是默认 shell 的路径,而不是当前 shell 的路径。更多细节请参考这个回答:https://dev59.com/_HA75IYBdhLWcg3wYH7I遗憾的是,我不知道在 node-land 中的正确答案是什么。 - masukomi
当然,@robertklep,但问题是用户的“当前”shell,而您的答案并没有指出它是回答非常不同的问题,即他们的默认shell是什么。这会导致像Heroku CLI的开发人员使用代码,当用户使用与其默认shell不同的shell时,该代码会中断。 - masukomi
@masukomi,我猜我们对原始问题的解释不同,但如果它的意思是“当前交互式 shell”,那么是的,process.env.SHELL 并不适用于所有情况(尽管我猜它在99.9%的情况下都有效)。不幸的是,除了一些复杂的启发式方法之外,没有真正的替代方案。或者用户应该学会如何更改他们的交互式 shell ;) (是的,我意识到这并不总是可能的) - robertklep
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接