我正在读取spark的环境变量设置shell程序。我不太明白这部分。
代码如下所示:
# resolve links - $0 may be a softlink
this="${BASH_SOURCE:-$0}"
common_bin="$(cd -P -- "$(dirname -- "$this")" && pwd -P)"
script="$(basename -- "$this")"
this="$common_bin/$script"
# convert relative path to absolute path
config_bin="`dirname "$this"`"
script="`basename "$this"`"
config_bin="`cd "$config_bin"; pwd`"
this="$config_bin/$script"
export SPARK_PREFIX="`dirname "$this"`"/..
export SPARK_HOME="${SPARK_PREFIX}"
export SPARK_CONF_DIR="${SPARK_CONF_DIR:-"$SPARK_HOME/conf"}"
# Add the PySpark classes to the PYTHONPATH:
export PYTHONPATH="$SPARK_HOME/python:$PYTHONPATH"
export PYTHONPATH="$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH"
,第一部分是由评论说,部分解决的联系,并在第二部分,它是说相对路径转换为绝对路径。
但我没有看到这两个“this”:this="$common_bin/$script"
和this="$config_bin/$script"
之间的任何区别。我认为前4行已经解决了链接并给变量“this”一个绝对路径,为什么shell在第二部分(第二个注释之后的命令)中再次执行相同的操作?
在此先感谢。
btw,那些只是看起来像普通的shell变量,而不是环境变量。 –
顺便说一句,一个问题的问题。问什么' - '做的非常好,但它应该是**自己的问题。 (也就是说,如果您查看[POSIX实用程序语法指南](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html)),您可以自己找到答案。 –