【发布时间】:2020-10-28 14:28:56
【问题描述】:
我导出了环境变量(PYTHON、SPARK、ZEPELLIN)。我看了Setting environment variables on OS。
我想运行 Apache Zeppelin 笔记本。
grep -E "^setenv" /etc/launchd.conf | xargs -t -L 1 launchctl
launchctl setenv JAVA_HOME /Library/java/JavaVirtualMachines/adoptopenjdk-8.jdk/contents/Home/
launchctl setenv JRE_HOME /Library/java/JavaVirtualMachines/openjdk-14.0.1.jdk/contents/Home/jre/
launchctl setenv SPARK_HOME /usr/local/Cellar/apache-spark/2.4.5/libexec
launchctl setenv SBT_HOME /usr/local/bin/sbt
launchctl setenv ZEPPELIN_HOME /usr/local/bin/zeppelin-0.9.0-preview1-bin-all
launchctl setenv PYSPARK_PYTHON /usr/local/bin/python3.8
launchctl setenv PYSPARK_DRIVER_PYTHON jupyter
launchctl setenv PYSPARK_DRIVER_PYTHON_OPTS notebook
launchctl setenv PYTHON_HOME /usr/local/Cellar/python@3.8/3.8.3/Frameworks/Python.framework/Versions/3.8/bin
当我尝试运行时:
bin/zeppelin-daemon.sh start
我明白了:
zsh: no such file or directory: bin/zeppelin-daemon.sh
同样的错误
zeppelin-0.9.0-preview1-bin-all/bin/zeppelin-daemon.sh
我检查了环境变量
echo $[ZEPPELIN_HOME]
0
我删除了 .zshrc 并编辑了 ~./zprofile
export JAVA_HOME=/Library/java/JavaVirtualMachines/adoptopenjdk-8.jdk/contents/Home/
export JRE_HOME=/Library/java/JavaVirtualMachines/openjdk-14.0.1.jdk/contents/Home/jre/
export SPARK_HOME=/usr/local/Cellar/apache-spark/2.4.5/libexec
export SBT_HOME=/usr/local/bin/sbt
export ZEPPELIN_HOME=/usr/local/bin/zeppelin-0.8.1-bin-all
export PYSPARK_PYTHON=/usr/local/bin/python3.8
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'
export PATH=$JAVA_HOME/bin:$SPARK_HOME:$SPARK_HOME/bin:$SPARK_HOME/sbin:$SBT_HOME/bin:$ZEPPELIN_HOME/bin:$PATH
export PATH=$PYTHON_HOME/usr/local/Cellar/python@3.8/3.8.3/Frameworks/Python.framework/Versions/3.8/bin:$PATH
现在 echo $[JAVA_HOME] 显示
zsh: bad math expression: operand expected at `/Library/j...'
为什么? 如何解决这个问题?
【问题讨论】:
-
如果在启动程序时提供了显式路径组件,如在执行
bin时执行bin/zeppelin-daemon.sh,则不会搜索 PATH 并且该文件必须存在于工作目录下的那个位置.您在这里收到的错误消息与环境无关。当然脚本一旦启动,环境一定是正确的,但你显然还没有走到这一步。 -
除此之外,存储 zsh 环境变量的好地方是
~/.zshenv,因为这是您的主目录中唯一的文件,保证每次调用 zsh 都会处理该文件。请参阅man zsh中标题为 INVOCATION 的部分。
标签: macos apache zsh apache-zeppelin