aboutsummaryrefslogtreecommitdiff
path: root/spark-shell
diff options
context:
space:
mode:
Diffstat (limited to 'spark-shell')
-rwxr-xr-xspark-shell39
1 files changed, 36 insertions, 3 deletions
diff --git a/spark-shell b/spark-shell
index 574ae2104d..afbb7a9a8e 100755
--- a/spark-shell
+++ b/spark-shell
@@ -1,4 +1,37 @@
-#!/bin/sh
+#!/bin/bash --posix
FWDIR="`dirname $0`"
-export SPARK_LAUNCH_WITH_SCALA=1
-exec $FWDIR/run spark.repl.Main "$@"
+
+# Copy restore-TTY-on-exit functions from Scala script so spark-shell exits properly even in
+# binary distribution of Spark where Scala is not installed
+exit_status=127
+saved_stty=""
+
+# restore stty settings (echo in particular)
+function restoreSttySettings() {
+ stty $saved_stty
+ saved_stty=""
+}
+
+function onExit() {
+ if [[ "$saved_stty" != "" ]]; then
+ restoreSttySettings
+ fi
+ exit $exit_status
+}
+
+# to reenable echo if we are interrupted before completing.
+trap onExit INT
+
+# save terminal settings
+saved_stty=$(stty -g 2>/dev/null)
+# clear on error so we don't later try to restore them
+if [[ ! $? ]]; then
+ saved_stty=""
+fi
+
+$FWDIR/run spark.repl.Main "$@"
+
+# record the exit status lest it be overwritten:
+# then reenable echo and propagate the code.
+exit_status=$?
+onExit