 	     ;; TBD: a horrible hack, but why create new Custom variables?
 	     (arg (if (string-equal py-which-bufname "Python")
 		      "-u" "")))
-	(start-process py-which-bufname buf py-which-shell arg file)
+	(start-process py-which-bufname buf shell arg file)
 	(pop-to-buffer buf)
 	(py-postprocess-output-buffer buf)
 	;; TBD: clean up the temporary file!

			 (format "python-%d-%d" sn pid)
		       (format "python-%d" sn)))
		 (make-temp-name "python-")))
	 (file (expand-file-name temp py-temp-directory))
	 (cur (current-buffer))
	 (buf (get-buffer-create file)))
    ;; Write the contents of the buffer, watching out for indented regions.
    (save-excursion
      (goto-char start)
      (let ((needs-if (/= (py-point 'bol) (py-point 'boi))))
	(set-buffer buf)
	(when needs-if
	  (insert "if 1:\n"))
	(insert-buffer-substring cur start end)))

  "Return the parse state at point (see `parse-partial-sexp' docs)."
  (save-excursion
    (let ((here (point))
	  pps done)
      (while (not done)
	;; back up to the first preceding line (if any; else start of
	;; buffer) that begins with a popular Python keyword, or a
