【问题标题】:How to export env variable in node.js如何在 node.js 中导出环境变量
【发布时间】:2014-12-15 08:15:33
【问题描述】:

我非常喜欢我的node.js,我想使用它是我的bash 启动脚本~/.bashrc,但我不知道如何导出变量。

目前我必须使用这种方法:

export PS1=`node ~/PS1.js`
export PS2=`node ~/PS2.js`
export PATH=`node ~/PATH.js`

我想要.bashrc 看看有

#!/usr/local/bin/node
//do something, define functions
export_var('PS1', PS1())
export_var('PS2', PS2())
export_var('PATH', generatePATH())

process.env.PATH = something导出,只为当前执行的进程设置,也就是节点本身。

【问题讨论】:

  • 尝试使用“#”。作为第一行并保留第一块代码
  • @rafaelcastrocouto,你不明白这个问题,而是试图关闭它?我需要从 node.js 内部更改变量并让父进程保留它。您所指的问题是关于在 node.js 启动之前更改 PORT 变量。
  • 您需要获取文本吗?您需要在主进程中手动打开进程吗?在 .bashrc 导出中使用 ' 而不是 ` 并将命令作为字符串获取。
  • @GabrielBiga,我不需要获取变量的文本,我需要持久设置,这在Linux中称为“导出变量”。

标签: javascript node.js bash environment-variables


【解决方案1】:

一种可能的方式是使用JS打印出export语句,然后在shell中使用eval在当前shell中求值。

例如test.js

#!/usr/bin/env node
console.log('export A=40; export B=10');

在外壳中:

eval `./test.js`
echo $A

【讨论】:

  • 这是简单而干净的魔法!对于使用 yarn 的用户,请在运行命令时使用 yarn --silent <script>
【解决方案2】:

Node.js 将在一个单独的进程中运行,该进程会获取环境的副本。您无法更改父进程(执行 .bashrc)的环境。

但以下问题为您提供了答案: Can a shell script set environment variables of the calling shell?

您可以在 node.js 中编写一个新的脚本文件并通过source 调用它。

【讨论】:

  • 您能否为此添加一个代码示例,因为我不明白如何获取 node.js 脚本:“您可以从 node.js 中编写一个新的脚本文件并通过源调用它。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 2020-06-06
  • 2011-05-31
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 2018-03-09
相关资源
最近更新 更多