一直以来,我一直在 nodejs 中使用 spawn 运行可执行文件,现在当我尝试使用 spawn 运行 ubuntu 命令(如 unset、export 等)时,它们似乎不起作用。我猜是因为它正在寻找可执行文件。
我什至尝试过 exec,这似乎也不起作用。有小费吗?
我有一个 ubuntu 设备运行 Node ,我需要从 UI 设置/取消设置代理的 env 变量,例如http_proxy 和 no_proxy。除了导出还有什么其他方式我可以通过 Node 来做到这一点?环境变量应该在系统范围内设置,而不仅仅是当前进程。
最佳答案
环境变量只存在于内存中并且对于进程来说是本地的。对于任何正在运行的进程,只有进程本身可以更改“属于”该进程的环境变量集,但这些更改不会传播到现有的子进程或父进程。
简而言之:您无法更改将应用于系统上所有进程的环境变量(甚至不能从常规 shell 更改)。
您只能设置一个环境变量,使其可用于新创建的子进程(默认情况下,子进程从其父进程继承一组环境变量),但仅此而已。
如果您可以控制需要这些特定环境变量的进程的启动方式,则可以将这些变量的值写入文件(来自 Node)并在其他进程启动之前获取该文件,但这实际上取决于实际用例这是否是一个可用的选项。
关于node.js - 如何从 Nodejs 运行 Linux/Ubuntu 命令(不是可执行文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211263/