我正在讀取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)),您可以自己找到答案。 –