首页 > 解决方案 > .bash_profie 中的变量即使在采购和机器重启后也不会反映在节点 process.env 中

问题描述

我的 .bash_profile 中有以下变量,我可以使用 echo 命令在 mac 终端上看到这些变量,但是在记录这些变量时无法在节点 process.env($PATH 变量除外)中看到这些变量。我正在运行“sudo grunt taskName”来启动我的 grunt 构建任务,并尝试访问 gruntfile.js 中的 process.env。我只能看到 $PATH 变量和很少的 root 用户信息。任何线索都会有所帮助。

export MVN_HOME=/Users/myuser/Documents/apache-maven-3.3.9
export ANT_HOME=/Users/myuser/Documents/apache-ant-1.10.3
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/
CATALINA_HOME=/Users/myuser/Documents/apache-tomcat-8.0.52
export CATALINA_HOME
export NODE_ENV=dev
export PATH=$PATH:$CATALINA_HOME/bin
export PATH=$PATH:$MVN_HOME/bin:$ANT_HOME/bin:$JAVA_HOME
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

标签: node.jsbashterminalgruntjs

解决方案


将这些设置放在一个单独的文件中,以便您可以从各种脚本中访问它。

我还建议重构脚本,使其成为有效sh脚本。特别是,export分配作业是不可移植的。所以像这样的东西会进入,比如说$HOME/bin/nodestuff

MVN_HOME=/Users/myuser/Documents/apache-maven-3.3.9
ANT_HOME=/Users/myuser/Documents/apache-ant-1.10.3
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/
CATALINA_HOME=/Users/myuser/Documents/apache-tomcat-8.0.52
NODE_ENV=dev
export MVN_HOME ANT_HOME CATALINA_HOME NODE_ENV
PATH=$PATH:$CATALINA_HOME/bin:$MVN_HOME/bin:$ANT_HOME/bin:$JAVA_HOME
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
# no need to export PATH, your shell already does that

在你的.profile你可能会放

. $HOME/bin/nodestuff

在你的sudo命令行中

sudo -s <<<". $HOME/bin/nodestuff; grunt taskName"

推荐阅读