node.js - .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
解决方案
将这些设置放在一个单独的文件中,以便您可以从各种脚本中访问它。
我还建议重构脚本,使其成为有效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"
推荐阅读
- c++ - 用它需要的所有库编译一个 C++ 程序
- html - 如何仅缩进包含在
元素?
- javascript - Visual Studio 2019 为“Node.js:服务器端 Javascript”启动新进程,并且从不关闭旧进程
- .htaccess - .htaccess rule to remove file extension conflicts with existing rewrite rules
- python - ModuleNotFoundError after successful pip install in Google Colaboratory
- gridview - 如何在 GridView.builder 的内容之间显示 AdMob 原生广告?
- string - The value of attribute "android:text" associated with an element type "TextView" must not contain the '<' character
- string - PostScript: Does `cvs` terminate the string buffer?
- typescript - Am I being redundant on my class properties definition?
- javascript - detect whether ES Module is run from command line in Node