From unknown Fri Jun 20 18:08:38 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#20744 <20744@debbugs.gnu.org> To: bug#20744 <20744@debbugs.gnu.org> Subject: Status: python.el tries to undo shell quoting with split-string-and-unquote Reply-To: bug#20744 <20744@debbugs.gnu.org> Date: Sat, 21 Jun 2025 01:08:38 +0000 retitle 20744 python.el tries to undo shell quoting with split-string-and-u= nquote reassign 20744 emacs submitter 20744 Da Zhang severity 20744 normal tag 20744 fixed confirmed thanks From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 05 12:34:26 2015 Received: (at submit) by debbugs.gnu.org; 5 Jun 2015 16:34:26 +0000 Received: from localhost ([127.0.0.1]:42009 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0uZc-0007mQ-Ei for submit@debbugs.gnu.org; Fri, 05 Jun 2015 12:34:26 -0400 Received: from eggs.gnu.org ([208.118.235.92]:41606) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0uZZ-0007mB-4q for submit@debbugs.gnu.org; Fri, 05 Jun 2015 12:34:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z0uZR-0007Pf-M1 for submit@debbugs.gnu.org; Fri, 05 Jun 2015 12:34:15 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.8 required=5.0 tests=BAYES_50, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,HTML_MESSAGE,MIME_HTML_ONLY, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:32998) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0uZR-0007Pb-Iv for submit@debbugs.gnu.org; Fri, 05 Jun 2015 12:34:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55100) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0uZP-0006cJ-D5 for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 12:34:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z0uZM-0007Of-QI for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 12:34:11 -0400 Received: from mail-qg0-x230.google.com ([2607:f8b0:400d:c04::230]:36158) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0uZJ-0007Nj-5h; Fri, 05 Jun 2015 12:34:05 -0400 Received: by qgep100 with SMTP id p100so30523203qge.3; Fri, 05 Jun 2015 09:34:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject :content-type:content-transfer-encoding; bh=t0G/5nXG678d6/Yr4SpTlWEgRBarTPRL65whmL1vmOY=; b=tNvyEYny33viYDmB0jaETSYVNMIl57H7RjgZ99OiDmHpiBavUB6/VlcOa0WebcahqJ inPgyXNXrOSG/Q3AWiUzt2W15uW/1R02SOI0sW09XAf4nBSCQavgUTzQ8tFEqH/JI6lS 9XQnqADJp59eqSRQMSMfL4UGPVvODw68IelU4zdig7IXvp5adeQXXC91CTA8sNRiY3rU C489+ZVkX1iqIcmWTIkULLhADvJLIIEC4hPL4ue8dw+ZEkS5bTYixVFIsdrrB89hCOSO Rp2HdF143afObgkWi06iaqZ5uEg6fNhA9Z3uXMjNNId9RfW6R8GS4fOs+4ELI7E5FvEY Cc+w== X-Received: by 10.140.133.199 with SMTP id 190mr5301341qhf.17.1433522044315; Fri, 05 Jun 2015 09:34:04 -0700 (PDT) Received: from [10.35.157.65] ([134.174.110.14]) by mx.google.com with ESMTPSA id h63sm4181986qkh.34.2015.06.05.09.34.02 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 Jun 2015 09:34:03 -0700 (PDT) Message-ID: <5571CF77.5000902@gmail.com> Date: Fri, 05 Jun 2015 12:33:59 -0400 From: Da Zhang User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: bug-gnu-emacs@gnu.org, Eli Zaretskii Subject: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -2.7 (--) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.7 (--) From: Da Zhang <zhangda82@gmail.com>
To: bug-gnu-emacs@gnu.org
Subject: 24.5; shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly
--text follows this line--


Dear Emacs developers/maintainers,

I am writing this email to report an issue that has been bothering me
for a while.

I use python mode (python.el) for some python programming. When I invoke
the command python-shell-send-buffer, my Emacs always reports "Searching
for program: no such file or directory,
c\:/Anaconda3/Scripts/ipython.exe".

I traced down the cause of this problem, and found the following lines
in python.el:
(defun python-shell-parse-command ()    ;FIXME: why name it "parse"?
  "Calculate the string used to execute the inferior Python process."
  ;; FIXME: process-environment doesn't seem to be used anywhere within
  ;; this let.
  (let ((process-environment (python-shell-calculate-process-environment))
        (exec-path (python-shell-calculate-exec-path)))
    (format "%s %s"
            ;; FIXME: Why executable-find?
            (shell-quote-argument (executable-find python-shell-interpreter))
            python-shell-interpreter-args)))

The function call
(shell-quote-argument (executable-find python-shell-interpreter))
changed the path of my python interpreter from
"c:/Anaconda3/Scripts/ipython.exe"
to
"c\\:/Anaconda3/Scripts/ipython.exe".

I worked around this problem by replacing the function call
(shell-quote-argument (executable-find python-shell-interpreter))
with
(executable-find python-shell-interpreter) ;; edited by DZ on
2015/06/05: (shell-quote-argument) caused the problem of
"c\\:/Anaconda3/Scripts/ipython.exe"

To further analyze the problem, I found the function
shell-quote-argument defined in subr.el does not deal with the case when
bash from cygwin is used.

(defun shell-quote-argument (argument)
  "Quote ARGUMENT for passing as argument to an inferior shell."
  (cond
   ((and (eq system-type 'windows-nt) (w32-shell-dos-semantics))
    ;; First, quote argument so that CommandLineToArgvW will
    ;; understand it.  See
    ;; http://msdn.microsoft.com/en-us/library/17w5ykft%28v=vs.85%29.aspx
    ;; After we perform that level of quoting, escape shell
    ;; metacharacters so that cmd won't mangle our argument.  If the
    ;; argument contains no double quote characters, we can just
    ;; surround it with double quotes.  Otherwise, we need to prefix
    ;; each shell metacharacter with a caret.

    (setq argument
          ;; escape backslashes at end of string
          (replace-regexp-in-string
           "\\(\\\\*\\)$"
           "\\1\\1"
           ;; escape backslashes and quotes in string body
           (replace-regexp-in-string
            "\\(\\\\*\\)\""
            "\\1\\1\\\\\""
            argument)))

    (if (string-match "[%!\"]" argument)
        (concat
         "^\""
         (replace-regexp-in-string
          "\\([%!()\"<>&|^]\\)"
          "^\\1"
          argument)
         "^\"")
      (concat "\"" argument "\"")))
   (t
    (if (equal argument "")
        "''"
      ;; Quote everything except POSIX filename characters.
      ;; This should be safe enough even for really weird shells.
      (replace-regexp-in-string
       "\n" "'\n'"
       (replace-regexp-in-string "[^-0-9a-zA-Z_./\n]" "\\\\\\&" argument))))
   ))

I added the following lines in the cond statement, to solve the problem.
   ((and (eq system-type 'windows-nt) (if (string-match ".*cygwin.*" (w32-shell-name)) t nil)) ;; DZ's edit on 6/5/2015
    (if (equal argument "")
        "''"
      ;; Quote everything except POSIX filename characters.
      ;; This should be safe enough even for really weird shells.
      (replace-regexp-in-string
       "\n" "'\n'"
       (replace-regexp-in-string "[^-0-9a-zA-Z_./\n:]" "\\\\\\&" argument))))
   ((eq system-type 'ms-dos)
    ;; Quote using double quotes, but escape any existing quotes in
    ;; the argument with backslashes.
    (let ((result "")
          (start 0)
          end)
      (if (or (null (string-match "[^\"]" argument))
              (< (match-end 0) (length argument)))
          (while (string-match "[\"]" argument start)
            (setq end (match-beginning 0)
                  result (concat result (substring argument start end)
                                 "\\" (substring argument end (1+ end)))
                  start (1+ end))))
      (concat "\"" result (substring argument start) "\"")))

However, the edits does not change the behavior of subr.el.

I worked with Eli Zaretskii on similar problem before, and here I report a more thorough analysis in the hope some experts
more capable than me could help to solve this problem.

Thanks.

Da Zhang



In GNU Emacs 24.5.1 (x86_64-w64-mingw32)
 of 2015-05-16 on KAEL
Windowing system distributor `Microsoft Corp.', version 6.3.9600
Configured using:
 `configure --prefix=/z/emacs --host=x86_64-w64-mingw32
 --target=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --with-wide-int
 --with-jpeg --with-xpm --with-png --with-tiff --with-rsvg --with-xml2
 --with-gnutls --with-sound=yes --with-file-notification=yes
 --without-dbus --without-imagemagick 'CFLAGS=-O3 -fomit-frame-pointer
 -g0 -pipe' 'LDFLAGS=-static-libgcc -static-libstdc++ -static -s
 -Wl,-s''

Important settings:
  value of $LANG: ENU
  locale-coding-system: utf-8

Major mode: Emacs-Lisp

Minor modes in effect:
  guide-key-mode: t
  recentf-mode: t
  winner-mode: t
  cua-mode: t
  global-company-mode: t
  company-mode: t
  rainbow-delimiters-mode: t
  sml-modeline-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  anything-dired-mode: Enable anything completion in Dired functions.
Bindings affected are C, R, S, H.
This is deprecated for Emacs24+ users, use `ac-mode' instead.
  ido-vertical-mode: t
  ido-everywhere: t
  tabbar-mwheel-mode: t
  tabbar-mode: t
  shell-dirtrack-mode: t
  desktop-save-mode: t
  TeX-PDF-mode: t
  global-auto-revert-mode: t
  display-time-mode: t
  auto-image-file-mode: t
  show-paren-mode: t
  which-function-mode: t
  delete-selection-mode: t
  global-hl-line-mode: t
  diff-auto-refine-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Recent messages:
Starting new Ispell process aspell with default dictionary...
Fontifying README.W32... (regexps...........................................)
Starting new Ispell process aspell with default dictionary...
Wrote c:/home/zhangda/.emacs.d/.emacs.desktop.lock
Desktop: 1 frame, 5 buffers restored.
(Shell command succeeded with no output)
Desktop: 1 frame, 5 buffers restored.
For information about GNU Emacs and the GNU system, type C-h C-a.
Mark saved where search started [2 times]
Mark activated

Load-path shadows:
c:/home/zhangda/.emacs.d/elpa/anything-20130606.946/anything-complete hides c:/home/zhangda/.emacs.d/elpa/anything-complete-1.86/anything-complete
c:/home/zhangda/.emacs.d/elpa/anything-20130606.946/anything-match-plugin hides c:/home/zhangda/.emacs.d/elpa/anything-match-plugin-1.27/anything-match-plugin

Features:
(shadow sort mail-extr warnings emacsbug sendmail misearch multi-isearch
swiper ivy darkroom eim eim-extra cdlatex texmathp flyspell ispell
org-rmail org-mhe org-irc org-info org-gnus org-docview doc-view
jka-compr image-mode org-bibtex bibtex org-bbdb org-w3m indent-guide
python-cell outline-magic auto-complete popup highlight-indentation
sphinx-doc guide-key popwin company-files company-oddmuse
company-keywords company-etags company-gtags company-dabbrev-code
company-dabbrev company-capf company-cmake company-xcode company-clang
company-semantic company-eclim company-template company-css company-nxml
company-bbdb vc-hg recentf tree-widget helm-files helm-buffers
helm-elscreen helm-tags helm-bookmark helm-adaptive helm-info bookmark
pp helm-locate helm-help helm-match-plugin helm-grep helm-regexp
helm-plugin helm-external helm-net helm-utils helm helm-source f s
ucs-normalize ace-jump-zap ace-jump-mode winner smartparens-config
smartparens-python smartparens-latex smartparens dash cua-base
visual-regexp eldoc company elpy pyvenv elpy-refactor files-x etags
flymake-cursor flymake-python-pyflakes flymake-easy
python-el-fgallina-expansions python json iedit iedit-lib smex
rainbow-delimiters re-builder matlab-load rainbow-mode google-c-style
fbib sml-modeline framemove windmove weblogger xml-rpc timezone url-http
tls url-auth url-gw expand-region text-mode-expansions
cc-mode-expansions the-org-mode-expansions latex-mode-expansions
er-basic-expansions expand-region-core expand-region-custom undo-tree
diff anything-config browse-url rx anything-match-plugin xml url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap tramp tramp-compat tramp-loaddefs trampver
ffap url-parse auth-source eieio eieio-core gnus-util password-cache
url-vars anything bm find-dired help-mode dired+ image-dired dired-x
dired-aux header2 color-theme-dawn-night color-theme ido-vertical-mode
ido browse-kill-ring tabbar ibuf-macs ibuffer server org-bullets
ox-beamer ox-latex ox-icalendar ox-html ox-ascii ox-publish ox
org-element ob-makefile ob-sh shell ob-R ob-python ob-perl ob-org
ob-matlab ob-octave ob-latex ob-gnuplot ob-plantuml ob-ditaa ob-css
ob-calc calc-store calc-trail calc-ext calc calc-loaddefs calc-macs ob-C
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs org org-macro org-footnote org-pcomplete pcomplete
org-list org-faces org-entities noutline outline org-version
ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp org-src ob-keys
ob-comint ob-core ob-eval org-compat org-macs org-loaddefs find-func
cal-menu calendar cal-loaddefs muse-wiki muse-colors muse-docbook
muse-texinfo texnfo-upd texinfo muse-latex muse-html muse-xml-common
cus-edit cus-start cus-load muse-publish muse-project muse-protocols
muse-regexps wid-edit derived muse muse-nested-tags muse-mode flymake
tex-mik preview prv-emacs reporter desktop frameset latex tex-style
tex-buf tex crm cl-macs autorevert filenotify time image-file avoid
paren which-func imenu delsel col-highlight vline highlight-symbol
thingatpt highlight-parentheses hl-line byte-opt bytecomp byte-compile
cl-extra cconv hlinum linum edmacro kmacro w32-browser htmlize-view
htmlize cl gv cl-loaddefs cl-lib ahg vc-annotate vc vc-dispatcher dired
grep compile ewoc log-edit message format-spec rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mailabbrev mail-utils gmm-utils mailheader
pcvs-util add-log diff-mode easy-mmode cygwin-mount ange-ftp comint
ansi-color ring anything-autoloads anything-complete-autoloads
anything-match-plugin-autoloads color-file-completion-autoloads
color-theme-autoloads tex-site csv-mode-autoloads etags-table-autoloads
flymake-shell-autoloads gnuplot-mode-autoloads hide-lines-autoloads
htmlize-autoloads http-post-simple-autoloads less-autoloads
muse-autoloads py-import-check-autoloads pydoc-info advice help-fns
info-look rainbow-mode-autoloads info easymenu sml-mode-autoloads
vline-autoloads weblogger-autoloads package epg-config time-date tooltip
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel dos-w32
ls-lisp w32-common-fns disp-table w32-win w32-vars tool-bar dnd fontset
image regexp-opt fringe tabulated-list newcomment lisp-mode prog-mode
register page menu-bar rfn-eshadow timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core frame cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev
minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
w32notify w32 multi-tty emacs)

Memory information:
((conses 16 670478 66958)
 (symbols 56 63650 0)
 (miscs 48 489 281)
 (strings 32 157872 41458)
 (string-bytes 1 4522676)
 (vectors 16 75479)
 (vector-slots 8 1116100 22330)
 (floats 8 400 929)
 (intervals 56 3470 0)
 (buffers 960 18))

From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 05 16:13:39 2015 Received: (at submit) by debbugs.gnu.org; 5 Jun 2015 20:13:39 +0000 Received: from localhost ([127.0.0.1]:42183 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0xzm-00062x-CV for submit@debbugs.gnu.org; Fri, 05 Jun 2015 16:13:38 -0400 Received: from eggs.gnu.org ([208.118.235.92]:45664) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0xzj-00062g-JY for submit@debbugs.gnu.org; Fri, 05 Jun 2015 16:13:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z0xzd-0004un-6e for submit@debbugs.gnu.org; Fri, 05 Jun 2015 16:13:30 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,T_RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:39787) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0xzd-0004uh-3T for submit@debbugs.gnu.org; Fri, 05 Jun 2015 16:13:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59171) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0xzb-0001G1-Sm for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 16:13:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z0xzW-0004rn-Se for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 16:13:27 -0400 Received: from mtaout25.012.net.il ([80.179.55.181]:54528) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0xzW-0004ql-Fa for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 16:13:22 -0400 Received: from conversion-daemon.mtaout25.012.net.il by mtaout25.012.net.il (HyperSendmail v2007.08) id <0NPH00H00MGZ6G00@mtaout25.012.net.il> for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 23:09:14 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by mtaout25.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NPH00BCWMND7S80@mtaout25.012.net.il>; Fri, 05 Jun 2015 23:09:14 +0300 (IDT) Date: Fri, 05 Jun 2015 23:13:18 +0300 From: Eli Zaretskii Subject: Re: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly In-reply-to: <5571CF77.5000902@gmail.com> X-012-Sender: halo1@inter.net.il To: Da Zhang Message-id: <83oaktoqw1.fsf@gnu.org> References: <5571CF77.5000902@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit Cc: bug-gnu-emacs@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) > Date: Fri, 05 Jun 2015 12:33:59 -0400 > From: Da Zhang > > I use python mode (python.el) for some python programming. When I invoke > the command python-shell-send-buffer, my Emacs always reports "Searching > for program: no such file or directory, > c\:/Anaconda3/Scripts/ipython.exe". > > I traced down the cause of this problem, and found the following lines > in python.el: > (defun python-shell-parse-command () ;FIXME: why name it "parse"? > "Calculate the string used to execute the inferior Python process." > ;; FIXME: process-environment doesn't seem to be used anywhere within > ;; this let. > (let ((process-environment (python-shell-calculate-process-environment)) > (exec-path (python-shell-calculate-exec-path))) > (format "%s %s" > ;; FIXME: Why executable-find? > (shell-quote-argument (executable-find python-shell-interpreter)) > python-shell-interpreter-args))) > > The function call > (shell-quote-argument (executable-find python-shell-interpreter)) > changed the path of my python interpreter from > "c:/Anaconda3/Scripts/ipython.exe" > to > "c\\:/Anaconda3/Scripts/ipython.exe". > > I worked around this problem by replacing the function call > (shell-quote-argument (executable-find python-shell-interpreter)) > with > (executable-find python-shell-interpreter) ;; edited by DZ on > 2015/06/05: (shell-quote-argument) caused the problem of > "c\\:/Anaconda3/Scripts/ipython.exe" > > To further analyze the problem, I found the function > shell-quote-argument defined in subr.el does not deal with the case when > bash from cygwin is used. For the record, this is bug #20237. > I added the following lines in the cond statement, to solve the problem. > ((and (eq system-type 'windows-nt) (if (string-match ".*cygwin.*" > (w32-shell-name)) t nil)) ;; DZ's edit on 6/5/2015 > (if (equal argument "") > "''" > ;; Quote everything except POSIX filename characters. > ;; This should be safe enough even for really weird shells. > (replace-regexp-in-string > "\n" "'\n'" > (replace-regexp-in-string "[^-0-9a-zA-Z_./\n:]" "\\\\\\&" argument)))) I'm sorry, but I don't see how we can accept such a change: it means that when the Cygwin Bash is used as the shell, the ':' character will not be quoted, which I think could cause trouble in some cases. Maybe some Bash expert could chime in and tell whether problems are possible with Bash in this case. Is there any way you could avoid using the Cygwin Bash as the shell when running the native Windows build of Emacs? That would make the problem go away without any need for changes. From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 05 16:51:10 2015 Received: (at submit) by debbugs.gnu.org; 5 Jun 2015 20:51:10 +0000 Received: from localhost ([127.0.0.1]:42232 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0ya5-0006xI-CJ for submit@debbugs.gnu.org; Fri, 05 Jun 2015 16:51:10 -0400 Received: from eggs.gnu.org ([208.118.235.92]:53023) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0ya2-0006wl-1y for submit@debbugs.gnu.org; Fri, 05 Jun 2015 16:51:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z0yZv-0003Bn-DI for submit@debbugs.gnu.org; Fri, 05 Jun 2015 16:51:00 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.8 required=5.0 tests=BAYES_50, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,HTML_MESSAGE,MIME_HTML_ONLY, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:38614) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0yZv-0003Bd-9r for submit@debbugs.gnu.org; Fri, 05 Jun 2015 16:50:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38280) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0yZt-0005fb-Rx for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 16:50:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z0yZo-00039z-A4 for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 16:50:57 -0400 Received: from mail-qk0-x22b.google.com ([2607:f8b0:400d:c09::22b]:35260) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0yZo-00039u-2e; Fri, 05 Jun 2015 16:50:52 -0400 Received: by qkhq76 with SMTP id q76so46668458qkh.2; Fri, 05 Jun 2015 13:50:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=vblxsv+PQibVLY7myxGwcGvzwQRbeDkBG4rN/r4vhBY=; b=uDRonL+C8Uxq/yL92DvzGNB1W3rBlefU1ebUvNgMVmiy4N3c1u9bt016WybwuxU0w2 gnUuDUfda78Kj+VQEjcMlA6Hwz179s0Vzzv13tElxLfobxwJfKlQ8Y2QU0h3ZCZnQ8fT c+JmEZOR+yn4CmZp34aoc8nyMnacLiKEf9OGwA66CUg/cqMYsxkZZvC/mEu8ZWhgzukn vnImRH/KvtutOPSYX7FGgLsEpWtLR+gyQ7gGe2MYi6xUpLVvOvBT4WrlAT6nos+d9Ne9 Y5gukj5nH461Yt04cHlTq64EOidGUNQjuFOawHQ5quSIk7nnSSaGQlerLBLaV4wkjqHh 5g+A== X-Received: by 10.141.18.202 with SMTP id u193mr6527306qhd.16.1433537451666; Fri, 05 Jun 2015 13:50:51 -0700 (PDT) Received: from [10.35.157.65] ([134.174.110.14]) by mx.google.com with ESMTPSA id k133sm4459261qhc.35.2015.06.05.13.50.50 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 Jun 2015 13:50:51 -0700 (PDT) Message-ID: <55720BA6.60809@gmail.com> Date: Fri, 05 Jun 2015 16:50:46 -0400 From: Da Zhang User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> In-Reply-To: <83oaktoqw1.fsf@gnu.org> Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -2.7 (--) X-Debbugs-Envelope-To: submit Cc: bug-gnu-emacs@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.7 (--) Hello Eli,

Thanks for looking into this again. The change I made is a very ugly hack, and I did not use it actually -- instead, I just changed the python.el to avoid using shell-quote-argument.
For work reason I have to use Windows, but I do use cygwin bash as my working shell and it's convenient to have emacs and bash together, such as in dired, grep, etc.
I understand using cmd.exe could solve the problem, but I am reporting this issue in subr.el, particularly, shell-quote-argument, because I think the current code is forcing Windows users to use the cmd shell.

In fact, I did not see such a problem before Emacs 24.3. There might be some changes since then. In addition, there is a 10-years old post in
http://lists.gnu.org/archive/html/emacs-devel/2005-03/msg00313.html
talking about the similar problem, and the lister mentioned
"
It seems very usual for emacs users on w32 to use cygwin or mingw.
Right now shell-quote-argument would return something wrong when bash
or some "intelligent" shell is used on w32 because it assumes a dumb
w32 shell.
"

I am no expert in this this fundamental lisp model of subr.el, and the consequence of changing it. That's why I am reporting this as a bug in the hope some higher experts could lend some help.

Thanks.

Da Zhang

On 6/5/2015 4:13 PM, Eli Zaretskii wrote:
Date: Fri, 05 Jun 2015 12:33:59 -0400
From: Da Zhang <zhangda82@gmail.com>

I use python mode (python.el) for some python programming. When I invoke
the command python-shell-send-buffer, my Emacs always reports "Searching
for program: no such file or directory,
c\:/Anaconda3/Scripts/ipython.exe".

I traced down the cause of this problem, and found the following lines
in python.el:
(defun python-shell-parse-command () ;FIXME: why name it "parse"?
"Calculate the string used to execute the inferior Python process."
;; FIXME: process-environment doesn't seem to be used anywhere within
;; this let.
(let ((process-environment (python-shell-calculate-process-environment))
(exec-path (python-shell-calculate-exec-path)))
(format "%s %s"
;; FIXME: Why executable-find?
(shell-quote-argument (executable-find python-shell-interpreter))
python-shell-interpreter-args)))

The function call 
(shell-quote-argument (executable-find python-shell-interpreter))
changed the path of my python interpreter from
"c:/Anaconda3/Scripts/ipython.exe"
to
"c\\:/Anaconda3/Scripts/ipython.exe".

I worked around this problem by replacing the function call
(shell-quote-argument (executable-find python-shell-interpreter))
with
(executable-find python-shell-interpreter) ;; edited by DZ on
2015/06/05: (shell-quote-argument) caused the problem of
"c\\:/Anaconda3/Scripts/ipython.exe"

To further analyze the problem, I found the function
shell-quote-argument defined in subr.el does not deal with the case when
bash from cygwin is used.
For the record, this is bug #20237.

I added the following lines in the cond statement, to solve the problem.
((and (eq system-type 'windows-nt) (if (string-match ".*cygwin.*"
(w32-shell-name)) t nil)) ;; DZ's edit on 6/5/2015
(if (equal argument "")
"''"
;; Quote everything except POSIX filename characters.
;; This should be safe enough even for really weird shells.
(replace-regexp-in-string
"\n" "'\n'"
(replace-regexp-in-string "[^-0-9a-zA-Z_./\n:]" "\\\\\\&" argument))))
I'm sorry, but I don't see how we can accept such a change: it means
that when the Cygwin Bash is used as the shell, the ':' character will
not be quoted, which I think could cause trouble in some cases.

Maybe some Bash expert could chime in and tell whether problems are
possible with Bash in this case.

Is there any way you could avoid using the Cygwin Bash as the shell
when running the native Windows build of Emacs?  That would make the
problem go away without any need for changes.

From debbugs-submit-bounces@debbugs.gnu.org Fri Jun 05 17:06:00 2015 Received: (at submit) by debbugs.gnu.org; 5 Jun 2015 21:06:00 +0000 Received: from localhost ([127.0.0.1]:42240 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0yoR-0007JM-BQ for submit@debbugs.gnu.org; Fri, 05 Jun 2015 17:06:00 -0400 Received: from eggs.gnu.org ([208.118.235.92]:60428) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z0yoN-0007J7-Pu for submit@debbugs.gnu.org; Fri, 05 Jun 2015 17:05:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z0yoH-0002vm-9l for submit@debbugs.gnu.org; Fri, 05 Jun 2015 17:05:50 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: ** X-Spam-Status: No, score=2.8 required=5.0 tests=BAYES_50,DC_IMAGE_SPAM_HTML, DC_IMAGE_SPAM_TEXT, DC_PNG_UNO_LARGO, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, HTML_MESSAGE,MIME_HTML_ONLY,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:42547) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0yoG-0002ut-Us for submit@debbugs.gnu.org; Fri, 05 Jun 2015 17:05:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45691) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0yoF-0007oK-8E for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 17:05:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z0yoB-0002lk-62 for bug-gnu-emacs@gnu.org; Fri, 05 Jun 2015 17:05:47 -0400 Received: from mail-qc0-x22c.google.com ([2607:f8b0:400d:c01::22c]:34754) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z0yoA-0002l2-Ux; Fri, 05 Jun 2015 17:05:43 -0400 Received: by qcej9 with SMTP id j9so34528167qce.1; Fri, 05 Jun 2015 14:05:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type; bh=BypWWr4JwZgu3F6s4YqG/mFOUrRHXUGw26M9azrQ8fg=; b=nJW9vDPzify7esxQD8V+OJqzFPqoCLJTmVHwlE2OnaUDWl6AwRuUlrSoBaybrahXF4 cJQoun3jFLCMoLV3nFMe9lWPOwEJbkFsOSsOplgjmAQ+8pKfmitYP+Y9U85eurlh99Pw gai0XZ0APqICVAyRQFV5LXz7BlPBxXH7YzRsWX7F8O+kNWqlfBtxd6w1jRGWAfApoF2n uSIcv5jxfHRuyc2NXmt9TLJrIIPLHJAzOcKbBwNJRAm0YYAiKXHD7N0cYowWweZ58SvN TZONvsLunOwGtWJ3VPndpTUdmn298Y0F8ZkIA+pb7HPbhHADgpmA5P/AXm2agLojBM4S 635Q== X-Received: by 10.140.132.17 with SMTP id 17mr6781171qhe.36.1433538342567; Fri, 05 Jun 2015 14:05:42 -0700 (PDT) Received: from [10.35.157.65] ([134.174.110.14]) by mx.google.com with ESMTPSA id 79sm4503708qkz.30.2015.06.05.14.05.41 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 Jun 2015 14:05:41 -0700 (PDT) Message-ID: <55720F21.4050401@gmail.com> Date: Fri, 05 Jun 2015 17:05:37 -0400 From: Da Zhang User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Eli Zaretskii Subject: Re: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> In-Reply-To: <83oaktoqw1.fsf@gnu.org> Content-Type: multipart/related; boundary="------------040103040700050806050801" X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -2.4 (--) X-Debbugs-Envelope-To: submit Cc: bug-gnu-emacs@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) This is a multi-part message in MIME format. --------------040103040700050806050801 Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: 7bit I did a comparison of the subr.el and python.el between Emacs 24.3 and Emacs 24.5, and I found subr.el was not changed, but python.el was changed regarding the (shell-quote-argument) call as shown below:
I think this comparison could help localizing the cause of the change of behavior.

Da Zhang




On 6/5/2015 4:13 PM, Eli Zaretskii wrote:
Date: Fri, 05 Jun 2015 12:33:59 -0400
From: Da Zhang <zhangda82@gmail.com>

I use python mode (python.el) for some python programming. When I invoke
the command python-shell-send-buffer, my Emacs always reports "Searching
for program: no such file or directory,
c\:/Anaconda3/Scripts/ipython.exe".

I traced down the cause of this problem, and found the following lines
in python.el:
(defun python-shell-parse-command () ;FIXME: why name it "parse"?
"Calculate the string used to execute the inferior Python process."
;; FIXME: process-environment doesn't seem to be used anywhere within
;; this let.
(let ((process-environment (python-shell-calculate-process-environment))
(exec-path (python-shell-calculate-exec-path)))
(format "%s %s"
;; FIXME: Why executable-find?
(shell-quote-argument (executable-find python-shell-interpreter))
python-shell-interpreter-args)))

The function call 
(shell-quote-argument (executable-find python-shell-interpreter))
changed the path of my python interpreter from
"c:/Anaconda3/Scripts/ipython.exe"
to
"c\\:/Anaconda3/Scripts/ipython.exe".

I worked around this problem by replacing the function call
(shell-quote-argument (executable-find python-shell-interpreter))
with
(executable-find python-shell-interpreter) ;; edited by DZ on
2015/06/05: (shell-quote-argument) caused the problem of
"c\\:/Anaconda3/Scripts/ipython.exe"

To further analyze the problem, I found the function
shell-quote-argument defined in subr.el does not deal with the case when
bash from cygwin is used.
For the record, this is bug #20237.

I added the following lines in the cond statement, to solve the problem.
((and (eq system-type 'windows-nt) (if (string-match ".*cygwin.*"
(w32-shell-name)) t nil)) ;; DZ's edit on 6/5/2015
(if (equal argument "")
"''"
;; Quote everything except POSIX filename characters.
;; This should be safe enough even for really weird shells.
(replace-regexp-in-string
"\n" "'\n'"
(replace-regexp-in-string "[^-0-9a-zA-Z_./\n:]" "\\\\\\&" argument))))
I'm sorry, but I don't see how we can accept such a change: it means
that when the Cygwin Bash is used as the shell, the ':' character will
not be quoted, which I think could cause trouble in some cases.

Maybe some Bash expert could chime in and tell whether problems are
possible with Bash in this case.

Is there any way you could avoid using the Cygwin Bash as the shell
when running the native Windows build of Emacs?  That would make the
problem go away without any need for changes.

--------------040103040700050806050801 Content-Type: image/png; name="gaefedad.png" Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="gaefedad.png" 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 9uTcrbKrMfV52j2kxzdGhZR94Pj+4/vztCuWYZ4GY667btWTyz9mH6PQNHJ4fP/5vb0lKDsI vqW+DRLWzw4eX+JSmBXdPD713FfFVD6EEFqikjw+3yXAWCfZ45uhL9Yt4HmWBY8PKerWWPHp X3ZfI6D3Q/H8YvgglcdX6+t1YxtwX68bzSJ5Pyim3suxOOzUuWPvh2K7Ueykl6PuADoPMbzw +IarkK/XTW2EvRyLwuhF85QY88tRMZq/XjdNf84+RqFp5PD4/vilHdBVy0B9ztawe9qHOe/3 uzFfT39GV33k03jCtF6x3nG10+tZ2UPkVMBy0zJO1+PBTbz135r1rmezNPWKpn2i7NmMSiuy fdguJXLt+Xq9KpuHopLaSN+HcPAkjy/UClbf8ESstYnREL7aiCtvKPZ644vunzrbty5ttex6 dsTvWxqsjYie4zxDU4cD9dzX9OdTsayJGAghhBI9PuclQH3S9tff/2E4CP/6Tb0Q6ZeJv59+ tS6u5bbGE6bNIappRH8+VXtT9nD8M+oCVMZTxmkc9L///qf68Gl1rOYQvz2pS1tU4+Pvp19/ eVL3bEalF7mdFdWjRK49Px1/UzYPRSW1kdLKA3p8oVaw+sZvurtUVVdx/PMfzf+bDeGrjbjy +qX1gePvun/qbN8ywl+eyudki9+eHPH7lgZrI6LnyGdopOLTv+y+RuNfFIVp3n3/7O7xfas2 n2bw/agsPOWPH8/F8fWU5vFV0/3a6VRBNZOw2vibOYNlGT9Pu+2pemjXrBBtKmK1srqtoObB z2YTo6qVv2s7LDfcnqrIn1+agNXN9emWSY/ENoWyp0m2i1pS/D7VBVOfBS6j3b3+pdazdnRf behNdnxXmk8NTNv8cHxOqCtfzM4+2ZwIqYMDWqgsj+/vp1+VvKTsU/vLTfVWjPfxmY/hnq8O S8U3y8z6u8s8VJ24WJdpf7ndbmbY7cb2rs5X28jz7lo1m85Xy8hT/rm/3LTq6F4is2bPV4dD 5Ikqqo1GmMcXaAWdMmTHHzUr7XxWlvhqI7K83qDtJvM1t7ry/nKrl11udTjNoeWl4dqQeo7v DE0bDvRzP3YRQgihuSrB43ON88bsHuNtX//53fYjLEvFN8vM+vsfv6hHfzoWRaE7cZHXoP/8 Xvz6ixl261/YuzJeQybP4yuUPf/5VFhGXvvPv59+1eyY7iUqt2139edTYTtEnqii2miEeXyB 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 AAAAAElFTkSuQmCC --------------040103040700050806050801-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 07 14:01:42 2015 Received: (at 20744) by debbugs.gnu.org; 7 Jun 2015 18:01:42 +0000 Received: from localhost ([127.0.0.1]:44239 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1etC-0000yE-8W for submit@debbugs.gnu.org; Sun, 07 Jun 2015 14:01:42 -0400 Received: from eggs.gnu.org ([208.118.235.92]:59890) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1etA-0000y2-GZ for 20744@debbugs.gnu.org; Sun, 07 Jun 2015 14:01:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z1et4-00076y-OO for 20744@debbugs.gnu.org; Sun, 07 Jun 2015 14:01:35 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00, T_RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([208.118.235.10]:38460) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z1et3-00076k-A0; Sun, 07 Jun 2015 14:01:33 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1Z1et1-0002Ts-AJ; Sun, 07 Jun 2015 14:01:31 -0400 From: Glenn Morris To: Eli Zaretskii Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> X-Spook: Cancelled encryption Biological weapon Home grown X-Ran: QwM|"zaCB$TOV]*]|E&-&f}xmyGR$T8|(n~GkFn@<"|w1[<7m<%L]G<1W\Ry;JZ2yA8)?q X-Hue: yellow X-Debbugs-No-Ack: yes X-Attribution: GM Date: Sun, 07 Jun 2015 14:01:31 -0400 Message-ID: User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.10 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 20744 Cc: 20744@debbugs.gnu.org, Da Zhang X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) Eli Zaretskii wrote: > I'm sorry, but I don't see how we can accept such a change: it means > that when the Cygwin Bash is used as the shell, the ':' character will > not be quoted, which I think could cause trouble in some cases. > > Maybe some Bash expert could chime in and tell whether problems are > possible with Bash in this case. Not an expert (and didn't read the rest of the report), but I can't think of a reason why ':' would need quoting in Bash (unlike eg ';' or '&'). What kind of thing are you thinking of? From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 07 15:12:13 2015 Received: (at 20744) by debbugs.gnu.org; 7 Jun 2015 19:12:13 +0000 Received: from localhost ([127.0.0.1]:44316 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1fzR-00073Q-AN for submit@debbugs.gnu.org; Sun, 07 Jun 2015 15:12:13 -0400 Received: from mtaout20.012.net.il ([80.179.55.166]:50969) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1fzO-00073D-Q7 for 20744@debbugs.gnu.org; Sun, 07 Jun 2015 15:12:11 -0400 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0NPL0040096Z1T00@a-mtaout20.012.net.il> for 20744@debbugs.gnu.org; Sun, 07 Jun 2015 22:12:04 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NPL003ZI9C4Z440@a-mtaout20.012.net.il>; Sun, 07 Jun 2015 22:12:04 +0300 (IDT) Date: Sun, 07 Jun 2015 22:11:49 +0300 From: Eli Zaretskii Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly In-reply-to: X-012-Sender: halo1@inter.net.il To: Glenn Morris Message-id: <837frfmiyy.fsf@gnu.org> References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 20744 Cc: 20744@debbugs.gnu.org, zhangda82@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.0 (+) > From: Glenn Morris > Cc: Da Zhang , 20744@debbugs.gnu.org > Date: Sun, 07 Jun 2015 14:01:31 -0400 > > Eli Zaretskii wrote: > > > I'm sorry, but I don't see how we can accept such a change: it means > > that when the Cygwin Bash is used as the shell, the ':' character will > > not be quoted, which I think could cause trouble in some cases. > > > > Maybe some Bash expert could chime in and tell whether problems are > > possible with Bash in this case. > > Not an expert (and didn't read the rest of the report), but I can't > think of a reason why ':' would need quoting in Bash (unlike eg ';' or '&'). > What kind of thing are you thinking of? PATH-style lists, maybe. Anyway, if we think ':' doesn't need to be quoted, how about removing it from the Posix branch of shell-quote-argument? Then we won't need ugly hacks that try to detect Cygwin Bash used from a native Windows Emacs. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 07 20:07:21 2015 Received: (at 20744) by debbugs.gnu.org; 8 Jun 2015 00:07:21 +0000 Received: from localhost ([127.0.0.1]:44379 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1kb2-0005Os-Vy for submit@debbugs.gnu.org; Sun, 07 Jun 2015 20:07:21 -0400 Received: from eggs.gnu.org ([208.118.235.92]:56265) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1kb1-0005Of-0t for 20744@debbugs.gnu.org; Sun, 07 Jun 2015 20:07:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z1kau-0001Wf-PA for 20744@debbugs.gnu.org; Sun, 07 Jun 2015 20:07:13 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43842) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z1kat-0001Ux-8o; Sun, 07 Jun 2015 20:07:11 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1Z1kas-0006YY-Kj; Sun, 07 Jun 2015 20:07:10 -0400 From: Glenn Morris To: Eli Zaretskii Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> <837frfmiyy.fsf@gnu.org> X-Spook: unclassified Belknap Biological Venezuela Suspicious X-Ran: (`:k$+6A`10]m.fUXW@3S!u($BXIy}f}hDz^',~L?g~tVdLFkVScLkk|B)g0`}Ax:l3!N} X-Hue: white X-Debbugs-No-Ack: yes X-Attribution: GM Date: Sun, 07 Jun 2015 20:07:10 -0400 In-Reply-To: <837frfmiyy.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 07 Jun 2015 22:11:49 +0300") Message-ID: User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 20744 Cc: 20744@debbugs.gnu.org, zhangda82@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) Eli Zaretskii wrote: > Anyway, if we think ':' doesn't need to be quoted, how about removing > it from the Posix branch of shell-quote-argument? The comment there says "This should be safe enough even for really weird shells." That's a much broader question than just Bash! :) But I thought of an example that affects Bash: scp localfile remotehost: If "localfile" contains ":", things will get confused. So it's probably best to leave it as-is. From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 07 20:24:52 2015 Received: (at 20744) by debbugs.gnu.org; 8 Jun 2015 00:24:52 +0000 Received: from localhost ([127.0.0.1]:44387 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1krx-0005o5-M1 for submit@debbugs.gnu.org; Sun, 07 Jun 2015 20:24:51 -0400 Received: from eggs.gnu.org ([208.118.235.92]:58298) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1krv-0005nl-6k for 20744@debbugs.gnu.org; Sun, 07 Jun 2015 20:24:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z1krp-0008UK-Ay for 20744@debbugs.gnu.org; Sun, 07 Jun 2015 20:24:42 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:44089) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z1krp-0008UF-7l; Sun, 07 Jun 2015 20:24:41 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1Z1kro-0007kH-MB; Sun, 07 Jun 2015 20:24:40 -0400 From: Glenn Morris To: Eli Zaretskii Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> <837frfmiyy.fsf@gnu.org> X-Spook: Al Qa'ida Small Pox bce Response cracking tempest AGT. X-Ran: $V4rVDYgl'?-=a[_eAN10HN>@L|p{SjGvhu;|vT'T!gGkta?HKk!lf=]+aXzN!_(o(jr[- X-Hue: yellow X-Debbugs-No-Ack: yes X-Attribution: GM Date: Sun, 07 Jun 2015 20:24:40 -0400 In-Reply-To: (Glenn Morris's message of "Sun, 07 Jun 2015 20:07:10 -0400") Message-ID: <1mh9qjgi7r.fsf@fencepost.gnu.org> User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 20744 Cc: 20744@debbugs.gnu.org, zhangda82@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) Glenn Morris wrote: > scp localfile remotehost: Well, that's not a shell issue, though. It's an scp issue. So it depends exactly what shell-quote-argument is for... From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 07 20:47:18 2015 Received: (at 20744) by debbugs.gnu.org; 8 Jun 2015 00:47:18 +0000 Received: from localhost ([127.0.0.1]:44392 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1lDi-0006K5-HC for submit@debbugs.gnu.org; Sun, 07 Jun 2015 20:47:18 -0400 Received: from eggs.gnu.org ([208.118.235.92]:33075) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1lDg-0006Js-FM for 20744@debbugs.gnu.org; Sun, 07 Jun 2015 20:47:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z1lDa-0001rG-DV for 20744@debbugs.gnu.org; Sun, 07 Jun 2015 20:47:11 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,T_RP_MATCHES_RCVD autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:44332) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z1lDa-0001rC-9y; Sun, 07 Jun 2015 20:47:10 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1Z1lDZ-0005rY-RA; Sun, 07 Jun 2015 20:47:09 -0400 From: Glenn Morris To: Eli Zaretskii Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> <837frfmiyy.fsf@gnu.org> <1mh9qjgi7r.fsf@fencepost.gnu.org> X-Spook: Department of Homeland Security quiche Bust Sears Tower X-Ran: #jO'M"];vOI2:E'rbX20+G7u8=!4[SbAlnK24]WDp}'d-Iyl.sqaOfTv0y~CtlSB'\4^|2 X-Hue: blue X-Debbugs-No-Ack: yes X-Attribution: GM Date: Sun, 07 Jun 2015 20:47:09 -0400 In-Reply-To: <1mh9qjgi7r.fsf@fencepost.gnu.org> (Glenn Morris's message of "Sun, 07 Jun 2015 20:24:40 -0400") Message-ID: <7g8ubvdo1e.fsf@fencepost.gnu.org> User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 20744 Cc: 20744@debbugs.gnu.org, zhangda82@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) I think the actual answer for Bash is the "metacharacters" list in the Bash manual, plus the "!" character (for history), as per: http://www.gnu.org/software/bash/manual/html_node/Quoting.html That doesn't include ":", but then there's those "really weird shells", whatever they may be... From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 07 22:43:53 2015 Received: (at 20744) by debbugs.gnu.org; 8 Jun 2015 02:43:53 +0000 Received: from localhost ([127.0.0.1]:44475 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1n2X-0000fY-2A for submit@debbugs.gnu.org; Sun, 07 Jun 2015 22:43:53 -0400 Received: from mtaout24.012.net.il ([80.179.55.180]:53880) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1n2U-0000fI-Lc for 20744@debbugs.gnu.org; Sun, 07 Jun 2015 22:43:51 -0400 Received: from conversion-daemon.mtaout24.012.net.il by mtaout24.012.net.il (HyperSendmail v2007.08) id <0NPL00400TUS8400@mtaout24.012.net.il> for 20744@debbugs.gnu.org; Mon, 08 Jun 2015 05:35:28 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by mtaout24.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NPL001P6TV1YP20@mtaout24.012.net.il>; Mon, 08 Jun 2015 05:35:28 +0300 (IDT) Date: Mon, 08 Jun 2015 05:43:25 +0300 From: Eli Zaretskii Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly In-reply-to: <7g8ubvdo1e.fsf@fencepost.gnu.org> X-012-Sender: halo1@inter.net.il To: Glenn Morris Message-id: <831thmncmq.fsf@gnu.org> References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> <837frfmiyy.fsf@gnu.org> <1mh9qjgi7r.fsf@fencepost.gnu.org> <7g8ubvdo1e.fsf@fencepost.gnu.org> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 20744 Cc: 20744@debbugs.gnu.org, zhangda82@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.0 (+) > From: Glenn Morris > Cc: 20744@debbugs.gnu.org, zhangda82@gmail.com > Date: Sun, 07 Jun 2015 20:47:09 -0400 > > > I think the actual answer for Bash is the "metacharacters" list in the > Bash manual, plus the "!" character (for history), as per: > > http://www.gnu.org/software/bash/manual/html_node/Quoting.html > > That doesn't include ":", but then there's those "really weird shells", > whatever they may be... Perhaps we could have a branch for Bash only. From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 08 03:43:47 2015 Received: (at 20744) by debbugs.gnu.org; 8 Jun 2015 07:43:47 +0000 Received: from localhost ([127.0.0.1]:44620 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1rik-0008Ce-7r for submit@debbugs.gnu.org; Mon, 08 Jun 2015 03:43:46 -0400 Received: from mout.gmx.net ([212.227.17.22]:59982) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1rii-0008CQ-10 for 20744@debbugs.gnu.org; Mon, 08 Jun 2015 03:43:44 -0400 Received: from detlef.gmx.de ([79.195.14.117]) by mail.gmx.com (mrgmx102) with ESMTPSA (Nemesis) id 0Lu2F0-1ZAD9U1e1G-011W7Y; Mon, 08 Jun 2015 09:43:34 +0200 From: Michael Albinus To: Eli Zaretskii Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> <837frfmiyy.fsf@gnu.org> <1mh9qjgi7r.fsf@fencepost.gnu.org> <7g8ubvdo1e.fsf@fencepost.gnu.org> <831thmncmq.fsf@gnu.org> Date: Mon, 08 Jun 2015 09:43:32 +0200 In-Reply-To: <831thmncmq.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 08 Jun 2015 05:43:25 +0300") Message-ID: <87pp56k5ln.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:l2u5Ncmseqapu43WmOFLkTRciwHHP9W8wufFjtIQLnjC5/KWw7K 4Y1VJNBynR/QNeFONxxU/CKFdTdvHud/1y6PTv0u2zxEF32uG/w6emr10JzwhaqJjquaY0O hB2OIhAsl2Rf7D0NKUHAVazkOiJgJhLtJwocP7cHcUwEMaUoTJtvD5edQhYnsJN66CEWe/z 0R/aSz32Ci/opO9JYNw2g== X-UI-Out-Filterresults: notjunk:1;V01:K0:TLY5Az79eKk=:ukITkg9DoLKCs3QC8nv+zs CO3NGBIrsfjr8oQA2D6okcAqGibatrCBzTuDoWDE8GIR0DkygIy4lWa7WtXjJqQ0f//A1H/nz nq0bQmeidojBgR8lKv2vvLQCMzY4IPwGWvQNgrlnh4ECfEV5jo2k4iwwaHWEvSEqrVUDqCfNH 1cKfWD3JrarE+N22JkUrbDy8DvYJqaFIlLUhOApyvlRZSLI26XbIxinkRbCcQalQt6UL2XCSa RJl7KqPme/eox3EhiwZ97S9S91yAcx77ERZPNTWnnX0N12g14s1seKeh93NFzxxqWJbOZCp7r +Dut7aVipWR1vx5+wNaU0OcmAPdqk+RjjV1wGGR/3YhTQpnClojFRNwkFS6YS0Mb+ySfquZC4 BV8/JiskhW95VYarY4fepXHPms6VD2gRj4bX0b4yAsq54avk9gaYeN8T+emVhftfJfOV+/vNq XldVxhgHCJ3HMmXg52RQs+FvR6Es43wuB9txegEwfqYjYB05mTqGRs4gC0X2lk/V+HKM5A6BY 8Wsu2gEpOUr9aW8QlQSHhmBIRNoIOu4d9L7nBpXiWoKAW7wyhM7Sx9zrUFef3IpLZNFMLPLuB zllxoEzap5BGlCUsf3H1bKcj4EGikU3yGKba3kh2U+X+q3+K6pjZbkcKQthtBpayjSfIosW0L Glk1aFnoGdFgacmaObW24+2rPEXZW4KSSnYg/Dj5n7jP1OKbkYDgUmTiTeaJD3kFrSKU= X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20744 Cc: Glenn Morris , 20744@debbugs.gnu.org, zhangda82@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) Eli Zaretskii writes: >> That doesn't include ":", but then there's those "really weird shells", >> whatever they may be... > > Perhaps we could have a branch for Bash only. Tramp would happily join that branch, for "really weird shells on a remote host". From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 08 10:03:57 2015 Received: (at 20744) by debbugs.gnu.org; 8 Jun 2015 14:03:57 +0000 Received: from localhost ([127.0.0.1]:45287 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1xea-0004pI-Bg for submit@debbugs.gnu.org; Mon, 08 Jun 2015 10:03:57 -0400 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:46320) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1xeU-0004p6-67 for 20744@debbugs.gnu.org; Mon, 08 Jun 2015 10:03:50 -0400 Received: from fmsmemgm.homelinux.net (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id t58E3jlX007962; Mon, 8 Jun 2015 10:03:45 -0400 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id E4142AE13F; Mon, 8 Jun 2015 10:03:44 -0400 (EDT) From: Stefan Monnier To: Glenn Morris Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly Message-ID: References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> <837frfmiyy.fsf@gnu.org> Date: Mon, 08 Jun 2015 10:03:44 -0400 In-Reply-To: (Glenn Morris's message of "Sun, 07 Jun 2015 20:07:10 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV5331=0 X-NAI-Spam-Version: 2.3.0.9393 : core <5331> : inlines <3172> : streams <1452068> : uri <1952832> X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: 20744 Cc: Eli Zaretskii , 20744@debbugs.gnu.org, zhangda82@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.3 (-) >> Anyway, if we think ':' doesn't need to be quoted, how about removing >> it from the Posix branch of shell-quote-argument? > The comment there says "This should be safe enough even for really weird > shells." That's a much broader question than just Bash! :) Let's stop escaping the : and if/when someone comes up with a very weird shell where this is a problem, we'll see what can be done. Stefan From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 08 10:32:10 2015 Received: (at 20744) by debbugs.gnu.org; 8 Jun 2015 14:32:10 +0000 Received: from localhost ([127.0.0.1]:45306 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1y5u-0005Ub-Nl for submit@debbugs.gnu.org; Mon, 08 Jun 2015 10:32:10 -0400 Received: from mtaout29.012.net.il ([80.179.55.185]:38686) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1y5o-0005U1-Ds for 20744@debbugs.gnu.org; Mon, 08 Jun 2015 10:32:04 -0400 Received: from conversion-daemon.mtaout29.012.net.il by mtaout29.012.net.il (HyperSendmail v2007.08) id <0NPM00A00QY6R600@mtaout29.012.net.il> for 20744@debbugs.gnu.org; Mon, 08 Jun 2015 17:31:05 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by mtaout29.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NPM008W6QZTAQ20@mtaout29.012.net.il>; Mon, 08 Jun 2015 17:31:05 +0300 (IDT) Date: Mon, 08 Jun 2015 17:31:27 +0300 From: Eli Zaretskii Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly In-reply-to: <87pp56k5ln.fsf@gmx.de> X-012-Sender: halo1@inter.net.il To: Michael Albinus Message-id: <83wpzel1a8.fsf@gnu.org> References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> <837frfmiyy.fsf@gnu.org> <1mh9qjgi7r.fsf@fencepost.gnu.org> <7g8ubvdo1e.fsf@fencepost.gnu.org> <831thmncmq.fsf@gnu.org> <87pp56k5ln.fsf@gmx.de> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 20744 Cc: rgm@gnu.org, 20744@debbugs.gnu.org, zhangda82@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.0 (+) > From: Michael Albinus > Cc: Glenn Morris , 20744@debbugs.gnu.org, zhangda82@gmail.com > Date: Mon, 08 Jun 2015 09:43:32 +0200 > > Eli Zaretskii writes: > > >> That doesn't include ":", but then there's those "really weird shells", > >> whatever they may be... > > > > Perhaps we could have a branch for Bash only. > > Tramp would happily join that branch, for "really weird shells on a > remote host". Meaning you are for such a change, or against it? (Sorry, it wasn't clear from what you said.) From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 08 11:14:43 2015 Received: (at 20744) by debbugs.gnu.org; 8 Jun 2015 15:14:43 +0000 Received: from localhost ([127.0.0.1]:45341 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1yl9-0006TU-1s for submit@debbugs.gnu.org; Mon, 08 Jun 2015 11:14:43 -0400 Received: from mout.gmx.net ([212.227.15.15]:57932) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1yl7-0006TG-AZ for 20744@debbugs.gnu.org; Mon, 08 Jun 2015 11:14:42 -0400 Received: from detlef.gmx.de ([79.195.14.117]) by mail.gmx.com (mrgmx003) with ESMTPSA (Nemesis) id 0Lymoh-1Z5RHx3TJ1-0166W7; Mon, 08 Jun 2015 17:14:34 +0200 From: Michael Albinus To: Eli Zaretskii Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> <837frfmiyy.fsf@gnu.org> <1mh9qjgi7r.fsf@fencepost.gnu.org> <7g8ubvdo1e.fsf@fencepost.gnu.org> <831thmncmq.fsf@gnu.org> <87pp56k5ln.fsf@gmx.de> <83wpzel1a8.fsf@gnu.org> Date: Mon, 08 Jun 2015 17:14:33 +0200 In-Reply-To: <83wpzel1a8.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 08 Jun 2015 17:31:27 +0300") Message-ID: <87616yjkpy.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:KRbkT6eYEVGCpovGkIcwPg5sLox4yfzzHoR28mtTAAYUhX0LpND ND8+SucGzTlC/sP0GE3mvUtv/ivCGIM70NlWUui+e1ox7YsG0As9BXlopEeFVRPXJa4C8Ch aLRy/9i4oM353xy7hMBUZeoBWBhJLyW0ybDMQdqPI6/kYwKjHDHyY4gz99naBmzdZozzNBl rk5mLc6cWcWoKtF0SAKSg== X-UI-Out-Filterresults: notjunk:1;V01:K0:qIlvvQcj8sY=:8dFqMZh3R4EeDT+c54s17m It8jXSH00ZvgvMbiWrjFox++ZWCVB7ixKAodI7DUOdJ4FYBoOf3H4n4kJ2uFdJoKvX1nuVnA+ QWB6UbbBNQZob7X/JoX46egFWCf7ZwU3K+qPZ9u6gJIdB0YKhm3aLlCbvlu3bi2iE0QrgARGA Beu+r6IJ1x0XSEfF8DvEOdAAeb/5ZcSHPwBmKfJvI8BPxFHTKWuhtSk3TceFqkfEAZvnrie0Y r9vCrqwYVzTWU+jZaWmlpR8qC2GUVFwgx9XCtYYrzg6OZ5W0JvVKPbOyIH6WqY8OSmWZA+l3S p87OonyByvPZHT9zy/iEswlIOTQmCw0n64aHGezcMqdyIw15zD37V8lFAXL+k3VJPkUT5LtIk U79R9HmV3gdHyd31yITfF3RzKxukp7N9d/rGmMGHdMN17Sh6V6ujvF/s0FKKf8QY5L84UBXqE Pl9dzAC6X/jyjCNVNbKOHx7o/6wUdMCqkr6wQyIKhugqrSdCDUR9/xVZfM33OcHQw8I+5OwPQ AOZdX78AfayecdU9qAju9HxjQPs6JVpERVIWPLf6hb4+trC/CJ+Hpy6mEkncjFqCSc5G0Kl7W bDCuBdXoEI6Kb+jFhSex9jpGwn3/R4L0E5Q4ugE1yWU6lrZMdz/LrT/pDh3KmONSeUCyIRe/z WuQaXY3N6hL8GnkJZnOnHAJ3ftYSAnHy+s07NHN/+eKZCLcA8I+O4MtxeIOmklhROR+w= X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20744 Cc: rgm@gnu.org, 20744@debbugs.gnu.org, zhangda82@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) Eli Zaretskii writes: >> >> That doesn't include ":", but then there's those "really weird shells", >> >> whatever they may be... >> > >> > Perhaps we could have a branch for Bash only. >> >> Tramp would happily join that branch, for "really weird shells on a >> remote host". > > Meaning you are for such a change, or against it? (Sorry, it wasn't > clear from what you said.) Bash is always a pain to handle, there are exceptions in Tramp's code for that. But having a branch for this is not realistic for Tramp, because Tramp doesn't distinguish remote shells, it only expects that they speak a bourne-shell dialect. My message was rather a sigh than a request. Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 08 12:22:55 2015 Received: (at 20744) by debbugs.gnu.org; 8 Jun 2015 16:22:55 +0000 Received: from localhost ([127.0.0.1]:45393 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1zp8-00016h-Rc for submit@debbugs.gnu.org; Mon, 08 Jun 2015 12:22:55 -0400 Received: from mtaout23.012.net.il ([80.179.55.175]:39631) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z1zp5-00016S-Tq for 20744@debbugs.gnu.org; Mon, 08 Jun 2015 12:22:53 -0400 Received: from conversion-daemon.a-mtaout23.012.net.il by a-mtaout23.012.net.il (HyperSendmail v2007.08) id <0NPM00600W2V7Z00@a-mtaout23.012.net.il> for 20744@debbugs.gnu.org; Mon, 08 Jun 2015 19:22:45 +0300 (IDT) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout23.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NPM006QNW5W3590@a-mtaout23.012.net.il>; Mon, 08 Jun 2015 19:22:45 +0300 (IDT) Date: Mon, 08 Jun 2015 19:22:31 +0300 From: Eli Zaretskii Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly In-reply-to: <87616yjkpy.fsf@gmx.de> X-012-Sender: halo1@inter.net.il To: Michael Albinus Message-id: <83sia2kw54.fsf@gnu.org> References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> <837frfmiyy.fsf@gnu.org> <1mh9qjgi7r.fsf@fencepost.gnu.org> <7g8ubvdo1e.fsf@fencepost.gnu.org> <831thmncmq.fsf@gnu.org> <87pp56k5ln.fsf@gmx.de> <83wpzel1a8.fsf@gnu.org> <87616yjkpy.fsf@gmx.de> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 20744 Cc: rgm@gnu.org, 20744@debbugs.gnu.org, zhangda82@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.0 (+) > From: Michael Albinus > Cc: rgm@gnu.org, 20744@debbugs.gnu.org, zhangda82@gmail.com > Date: Mon, 08 Jun 2015 17:14:33 +0200 > > Eli Zaretskii writes: > > >> >> That doesn't include ":", but then there's those "really weird shells", > >> >> whatever they may be... > >> > > >> > Perhaps we could have a branch for Bash only. > >> > >> Tramp would happily join that branch, for "really weird shells on a > >> remote host". > > > > Meaning you are for such a change, or against it? (Sorry, it wasn't > > clear from what you said.) > > Bash is always a pain to handle, there are exceptions in Tramp's code > for that. But having a branch for this is not realistic for Tramp, > because Tramp doesn't distinguish remote shells, it only expects that > they speak a bourne-shell dialect. > > My message was rather a sigh than a request. How about Stefan's suggestion to stop quoting the colon and see if anybody hollers? Are you okay with that, or will you holler? From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 08 12:34:16 2015 Received: (at 20744) by debbugs.gnu.org; 8 Jun 2015 16:34:16 +0000 Received: from localhost ([127.0.0.1]:45404 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z2007-0001Nn-H6 for submit@debbugs.gnu.org; Mon, 08 Jun 2015 12:34:15 -0400 Received: from mout.gmx.net ([212.227.17.20]:62480) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z2004-0001NZ-RL for 20744@debbugs.gnu.org; Mon, 08 Jun 2015 12:34:13 -0400 Received: from detlef.gmx.de ([79.195.14.117]) by mail.gmx.com (mrgmx101) with ESMTPSA (Nemesis) id 0M4CB5-1ZJf8p26Nf-00romI; Mon, 08 Jun 2015 18:34:04 +0200 From: Michael Albinus To: Eli Zaretskii Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly References: <5571CF77.5000902@gmail.com> <83oaktoqw1.fsf@gnu.org> <837frfmiyy.fsf@gnu.org> <1mh9qjgi7r.fsf@fencepost.gnu.org> <7g8ubvdo1e.fsf@fencepost.gnu.org> <831thmncmq.fsf@gnu.org> <87pp56k5ln.fsf@gmx.de> <83wpzel1a8.fsf@gnu.org> <87616yjkpy.fsf@gmx.de> <83sia2kw54.fsf@gnu.org> Date: Mon, 08 Jun 2015 18:34:03 +0200 In-Reply-To: <83sia2kw54.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 08 Jun 2015 19:22:31 +0300") Message-ID: <87zj4ai2h0.fsf@gmx.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:pgesx1foUx4N8JxWrjSE8BBX6lp10U9z66fCSDUgqJdB67eAcd6 x3Kz4U/URUNoQQ6mfmu+GL7/sbsEs6MQ9aP6T5ZEAiREKXed2iwHItrgTTfNmxi+jF/tiz3 y+9LDzKal0fS2hqADBUnQCe5WhnpxD1/b27K5A5q/CKWVoG1blF+Pcc9v7YH24DnjdMOP4F tXBeY0EHqMVl6oUG6QmpA== X-UI-Out-Filterresults: notjunk:1; X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20744 Cc: rgm@gnu.org, 20744@debbugs.gnu.org, zhangda82@gmail.com X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) Eli Zaretskii writes: > How about Stefan's suggestion to stop quoting the colon and see if > anybody hollers? Are you okay with that, or will you holler? That would be OK. We'll hear it, when Tramp users start to holler. Best regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 09 20:51:26 2016 Received: (at 20744) by debbugs.gnu.org; 10 Aug 2016 00:51:26 +0000 Received: from localhost ([127.0.0.1]:33468 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bXHjy-00088v-6X for submit@debbugs.gnu.org; Tue, 09 Aug 2016 20:51:26 -0400 Received: from mail-io0-f175.google.com ([209.85.223.175]:33349) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bXHjw-00088Z-N8; Tue, 09 Aug 2016 20:51:25 -0400 Received: by mail-io0-f175.google.com with SMTP id 38so27786450iol.0; Tue, 09 Aug 2016 17:51:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=J/HSXcktzP7lkW3fgYbWinO4Zv80YrAgDe2wyw4Uo8k=; b=amE/l5I0AcGm8N5mc+ejyhMdN4eXU2UXKidSQxxIF4wUBB0S4yzCpXoHnRuCE61RG3 cJOMw9kDX24qzvQ175ymytajDTFOrPm4eOJFzZS9+3+lxg+2VNbvWiugPXbTxE9YDb8M HIzOHhfhJavF0aXzV8Oq+3zrnqgS68Zc+kjwiYVcltsLn/27rbY0QgBhziMKMKTV+FTT 7R6/nnFyFi1WeX5zrV14anQVhNXWT554gAaGRfZ1V4u5D8Hwq+OpB0iyJgVBrYbRM9QL g3WE4kQ+00/AZCuZ72EKbPeNu+fpGXFFY/+MXsw4eIo1EMZueZ0c0tqueJakgWqWMOks VN3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=J/HSXcktzP7lkW3fgYbWinO4Zv80YrAgDe2wyw4Uo8k=; b=Hq7QzAoQEgWQflhWHeONvYnd0utNeGvJVseS0nL5Ou0sRDEedV/iW30NAwOJ/MNSrj 3kE3oFWLoktL+ehpcqLtMEf50XtMJl8AwoGYuFvxPB2s2GeOAk9wevXnEaO4GJKep+j5 /YymSZ5arj+OpRJUR7IRXEdJ1HtHnkBtWmN3gAWIlK+b6zmrhmxVplg0fx0pisd1AHiE 5YDoPkGRpV2WZ2cN7TVUYQVvoHox77lBRaQLy1GWhXFpkJhmWptSDMoNN0CgxUqOo440 jmaIVhWgVRZyUbaCEKjdLH1tW0RGO/z/YC96I5QK+iuGxMPUmZpiBvv1WCpsktM+4jwy qNFQ== X-Gm-Message-State: AEkooutLXtZbc3VOij3fkDY6g6zwS6bp4Suh5eNUMCykoolFvsLwLNH8iLIMIKH+8mMv0g== X-Received: by 10.107.140.205 with SMTP id o196mr2367565iod.42.1470790279028; Tue, 09 Aug 2016 17:51:19 -0700 (PDT) Received: from zony (206-188-64-44.cpe.distributel.net. [206.188.64.44]) by smtp.googlemail.com with ESMTPSA id x13sm2856205ite.1.2016.08.09.17.51.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 Aug 2016 17:51:18 -0700 (PDT) From: npostavs@users.sourceforge.net To: Da Zhang Subject: Re: bug#20744: shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly References: <5571CF77.5000902@gmail.com> Date: Tue, 09 Aug 2016 20:51:24 -0400 In-Reply-To: <5571CF77.5000902@gmail.com> (Da Zhang's message of "Fri, 05 Jun 2015 12:33:59 -0400") Message-ID: <87tweth2er.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 20744 Cc: 20744@debbugs.gnu.org, eliz@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) retitle 20744 python.el tries to undo shell quoting with split-string-and-unquote tags 20744 confirmed found 20744 25.1 quit Da Zhang writes: > From: Da Zhang > To: bug-gnu-emacs@gnu.org > Subject: 24.5; shell-quote-argument in Emacs 24.5 and Emacs 25 on Windows cannot figure out path correctly > --text follows this line-- > > Dear Emacs developers/maintainers, > > I am writing this email to report an issue that has been bothering me > for a while. > > I use python mode (python.el) for some python programming. When I invoke > the command python-shell-send-buffer, my Emacs always reports "Searching > for program: no such file or directory, > c\:/Anaconda3/Scripts/ipython.exe". > [...] > > The function call > (shell-quote-argument (executable-find python-shell-interpreter)) > changed the path of my python interpreter from > "c:/Anaconda3/Scripts/ipython.exe" > to > "c\\:/Anaconda3/Scripts/ipython.exe". > > I worked around this problem by replacing the function call > (shell-quote-argument (executable-find python-shell-interpreter)) > with > (executable-find python-shell-interpreter) ;; edited by DZ on > 2015/06/05: (shell-quote-argument) caused the problem of > "c\\:/Anaconda3/Scripts/ipython.exe" > > To further analyze the problem, I found the function > shell-quote-argument defined in subr.el does not deal with the case when > bash from cygwin is used. > [...] Actually, bash, regardless of being on cygwin or not, should have no problem with an escaped ":". The actual problem here is that python.el is using shell-quote-argument but then not using a shell. The result of python-shell-calculate-command (formerly known as python-shell-parse-command) gets passed to python-shell-make-comint as the CMD argument: (defun python-shell-make-comint (cmd proc-name &optional show internal) [...] (let* ((cmdlist (split-string-and-unquote cmd)) (buffer (apply #'make-comint-in-buffer proc-name proc-buffer-name interpreter nil args)) make-comint-in-buffer uses start-file-process, i.e., no shell is called. So python.el is trying to undo shell-quote-argument with split-string-and-unquote, this is the bug. To see this on any system, compare C-u M-x run-python RET 'python' -i this fails, while C-u M-x run-python RET "python" -i this succeeds (assuming you have python in exec-path). From debbugs-submit-bounces@debbugs.gnu.org Fri Nov 25 09:59:55 2016 Received: (at control) by debbugs.gnu.org; 25 Nov 2016 14:59:55 +0000 Received: from localhost ([127.0.0.1]:41596 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cAHyl-0002lm-J8 for submit@debbugs.gnu.org; Fri, 25 Nov 2016 09:59:55 -0500 Received: from mail-oi0-f67.google.com ([209.85.218.67]:33834) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cAHyf-0002lN-IY for control@debbugs.gnu.org; Fri, 25 Nov 2016 09:59:53 -0500 Received: by mail-oi0-f67.google.com with SMTP id m75so5282201oig.1 for ; Fri, 25 Nov 2016 06:59:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-transfer-encoding; bh=xeOh+hNRJiqFI1kRHm6z0Df57Ivx3t+yZZHCUqhujaI=; b=zygqi/Yjw+HluFDJrAQwDNH2QW7BikjS65nYBoEETG7hoMEAq5d1OK1rF8PV0bFyNU shIyUW796hzGNcWhgFKQhM1qQ1G5PwhU8r+E03QpIKcQjXzvxuDjF68UBkEHabvIEvV8 PQp0InZKiUF/rxqTrGK9JXjer2i/Zah9gcO76BwPnnZ71IfmOiYtmvG3u+c/d9m/7UjR J+HBS+suuprpif9eD0nGtGP8m29wnQRl6W5aW+89fDBT574oxOSSlZ75POsQYfWkQmD1 +L8suKd+ZQLmic7CeTg095Da0vUonOyRHeGbSM+z8vPXSUgOWYZAvnAXskcXxYsFRuzR Lnug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-transfer-encoding; bh=xeOh+hNRJiqFI1kRHm6z0Df57Ivx3t+yZZHCUqhujaI=; b=WJFdMlHIRFrCR/d1wUPxTgnLN4uyUOwZkIfAscnP0HAdo4RBDvVSzxfXHeJiFGY50n T5SRlcMKkynKQZbTIu208WQ0e6ofsLkc/tlG1i45ZK/MSBxVVnAYMhpL4pIg1qV8GfYb +dfsDP/ju8z98y++2o9PjyDMtyzCawiM78uYeN87a/qLwHUKFyQHBIAIWAaXJ2sopmce eSVnI7Qh+ByDMGPRKDRzmAk5VkLLQCsiXo027kpmnd3DhuB75FoUIHuSrKxCyjcXP10f fjTiovP3A2KX4fj1CRl/mxRU8jqevpeDNB8sPWkIAd1TkLhe/sw40mZE0ZIqddoAlviA zKQw== X-Gm-Message-State: AKaTC002Gkk29Ow39qa23DVnof3q5gK0CJ4i1iErZOgpclf5w6HzITwoh/K31WpwGgfZDtDnP/CDNrUhWq6Qbg== X-Received: by 10.157.54.245 with SMTP id s50mr4761559otd.181.1480085983637; Fri, 25 Nov 2016 06:59:43 -0800 (PST) MIME-Version: 1.0 Received: by 10.157.4.67 with HTTP; Fri, 25 Nov 2016 06:59:43 -0800 (PST) In-Reply-To: <83polk3qow.fsf@gnu.org> References: <83polk3qow.fsf@gnu.org> From: Noam Postavsky Date: Fri, 25 Nov 2016 09:59:43 -0500 X-Google-Sender-Auth: CslCrOqqywOWrBMp8AOkAuH8mxo Message-ID: Subject: Re: bug#25025: python-shell-calculate-command is wrong To: Eli Zaretskii Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Bcc: control@debbugs.gnu.org X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: control Cc: 25025@debbugs.gnu.org, =?UTF-8?B?Q2zDqW1lbnQgUGl0LS1DbGF1ZGVs?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) merge 25025 20744 quit On Fri, Nov 25, 2016 at 3:32 AM, Eli Zaretskii wrote: >> From: Cl=C3=A9ment Pit--Claudel >> Date: Fri, 25 Nov 2016 02:03:38 -0500 >> >> On 2016-11-25 01:24, Fabrice Popineau wrote: >> > The python shell name is not passed to any underlying shell. >> > It is used to create a process, so it must not be quoted in anyway. >> >> Are you sure? Looking at the code, I see this: >> >> (python-shell-make-comint >> (or cmd (python-shell-calculate-command)) =E2=80=A6) >> >> And python-shell-make-comint does this: >> >> (split-string-and-unquote cmd) >> >> (ok, this is weird). But still, if the command is "C:\Program Files\Pyt= hon\python.exe", then we *do* need the shell quoting, right? > > The quoting needs to be done only where a shell command is created > that is about to be passed to a shell. I believe in this case the > quoting is done too early. > I think the whole command should be quoted with combine-and-quote-strings to balance the call to split-string-and-unquote. From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 09 00:29:08 2016 Received: (at control) by debbugs.gnu.org; 9 Dec 2016 05:29:08 +0000 Received: from localhost ([127.0.0.1]:35088 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cFDk4-0000rL-0E for submit@debbugs.gnu.org; Fri, 09 Dec 2016 00:29:08 -0500 Received: from mail-io0-f193.google.com ([209.85.223.193]:34664) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cFDk1-0000qn-IG; Fri, 09 Dec 2016 00:29:06 -0500 Received: by mail-io0-f193.google.com with SMTP id y124so4682493iof.1; Thu, 08 Dec 2016 21:29:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=4Fs1d4GwTh5GrtVmaAiiDvSM3wqIZJcraKeM2GxxgV8=; b=gRp9tA9WGWDfVbFDKU0VHXfE+Spn3GzSLR1klLk36WUfqlBsFaEGS/cmoxBCpsB0vi P79gCl5hVD6lOQs3Dufe1fjr03v9QoOyz0EYydnsHKHB4OBerJmMG0EsMcvFWg8TNsQ0 ZSzQgaTEGKI9AUfiD156QxYrr2CABl5egF9Im5QAzzZ1VjK31AGbFqHG9Osnf3XaUUy0 4w/Sb4PjFpOjCuQtDH7AonFM8Ne3pZcmsQ5LBLOvb5OTjqwbLa3mIQBFJBS5tL4gN4DE 0vocVAZ4hnHoj2iy0m7H/QSza/fql99PMsu2Kgg03eg9FmeAw4C7AQSsSmu3wiSojU9V gYaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version :content-transfer-encoding; bh=4Fs1d4GwTh5GrtVmaAiiDvSM3wqIZJcraKeM2GxxgV8=; b=LDATZ5vYhtIqSm0j/RmJXj8m8qSJyQgPn+0zC4bIv4RklECHDHhhDL+oXJd2mrVAvN xgCVtvwBXWKaJe7tZ8wvonUKO9LrLPyDW9bWNOD/uRgQSl5EMk1mbqaykzPkZ4+S2S92 tTEjKosybNecot99U+pw0QXGHFKuiuwtgJobB0UeGgYOkfGJEEKcam9b0BOeq5eu76oN qfH4ycrcxepifred8NC/BXE4fPDch4j+CxdWshkbFkR/rZ+vVA/9oNJXgPPSODEv8m23 ARBQoCojM6ytyNA4fvByvPYvSdvQc5BJPHO9dhifmldxT48DqgLVStM+QeSdL7eDLkM/ T52Q== X-Gm-Message-State: AKaTC03Rh/tcKItURT8HvhzWBEao4ZKlUvBSTGXyHNs1AtomGEcmqGQqiGWo4wEvuYcLSw== X-Received: by 10.107.161.78 with SMTP id k75mr69713844ioe.39.1481261339936; Thu, 08 Dec 2016 21:28:59 -0800 (PST) Received: from zony ([45.2.7.65]) by smtp.googlemail.com with ESMTPSA id 9sm2931829itv.0.2016.12.08.21.28.58 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 08 Dec 2016 21:28:59 -0800 (PST) From: npostavs@users.sourceforge.net To: =?utf-8?Q?Cl=C3=A9ment?= Pit--Claudel Subject: Re: bug#25025: python-shell-calculate-command is wrong References: <83polk3qow.fsf@gnu.org> <83inra13r3.fsf@gnu.org> <8337ic29y0.fsf@gnu.org> <87r35wj4b8.fsf@users.sourceforge.net> <83zikkzytf.fsf@gnu.org> <8737i9iz28.fsf@users.sourceforge.net> <1949fc46-fd26-dddb-86b2-ab3478587271@gmail.com> <87wpflhgsf.fsf@users.sourceforge.net> <83a8chq7x6.fsf@gnu.org> <83d1hbpobp.fsf@gnu.org> <87h96ngmmq.fsf@users.sourceforge.net> <83k2biokad.fsf@gnu.org> Date: Fri, 09 Dec 2016 00:29:59 -0500 In-Reply-To: (Noam Postavsky's message of "Fri, 2 Dec 2016 11:41:54 -0500") Message-ID: <87pol1ekko.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: control Cc: 25025@debbugs.gnu.org, Eli Zaretskii X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) tags 25025 fixed close 25025 26.1 quit Noam Postavsky writes: > On Fri, Dec 2, 2016 at 10:46 AM, Eli Zaretskii wrote: >> >> Fine with me (and maybe also change the function's name while you are >> at it). > > If you meant to remove the "shell" from > `python-shell-calculate-command', I think that refers to the "python > shell" (which would be called REPL in Lisp speak). There are quite a > few other functions and variables with the python-shell prefix. > On Fri, Dec 2, 2016 at 11:15 AM, Cl=C3=A9ment Pit--Claudel wrote: >> 2. Keep running python as a subprocess, without a shell; in that >> case, user-supplied commands (in C-u M-x run-python) need to be >> "parsed" back into command + switches before running them, which >> introduces a small potential for incorrect parsing. >> >> Noam, your approach is (2), right? I like the simplicity. > > Yes, my approach keeps the status quo, it just stops introducing > shell-quoting which could be parsed incorrectly. > >> >> In the long run, it would be nice to offer a read-shell-command-as-list = function, probably based on eshell. Okay, it looks like the consensus is that we should apply the `combine-and-quote-strings' fix for now, and possibly in future switch to something more shell based. I've pushed it to master as 8f611e5e2309 "Fix bad quoting of python-shell-interpreter", and I'm closing this bug. From unknown Fri Jun 20 18:08:38 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 06 Jan 2017 12:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator From debbugs-submit-bounces@debbugs.gnu.org Wed Aug 16 07:01:48 2017 Received: (at control) by debbugs.gnu.org; 16 Aug 2017 11:01:48 +0000 Received: from localhost ([127.0.0.1]:40252 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dhw55-0006Sn-O8 for submit@debbugs.gnu.org; Wed, 16 Aug 2017 07:01:47 -0400 Received: from mail-io0-f170.google.com ([209.85.223.170]:32842) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dhw54-0006SY-C5 for control@debbugs.gnu.org; Wed, 16 Aug 2017 07:01:46 -0400 Received: by mail-io0-f170.google.com with SMTP id j32so11819414iod.0 for ; Wed, 16 Aug 2017 04:01:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:mime-version; bh=g3NO2gZdeTfEbli1QX9IjNKeM5EaW191TYSLKxKC8t8=; b=sp5jPGRl9skbqlk/PSlwtf6om8Q4Pck6LHpqVulVJ1KzNycNR73D/ycqhs8ocbw6Ul 1BC5SJXG1Q/TtTE+aB1UF8hLwy5E2oVTsEKw5ErnJS07yOZbDm8qF6sdlx8C+oz2DOds Ad33WA9Wj4nz0BS2AujYVd4bxxpKMhZijb9/uf1Ogda5QNFmNCKMjQ0baPzyLIttmvsm Z40Z87BqaKNvzHyt4aI1jU2aBZSZ42E8n49J876DNWVflaBQZY43CGozkHziR0OfYI3T nugEEP/nT+RjxpHFhSoz/5tL0/Esh1hOVBwlSL6wLmO8V1Frqb0PLTybMqQXLpFIPcdO KQjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :mime-version; bh=g3NO2gZdeTfEbli1QX9IjNKeM5EaW191TYSLKxKC8t8=; b=lb7u5VbT8WExkxQdQenDnxNmAxSiwTsNrmKUfbihR2qxK5FLoN1IKQb2kyZ8J9s7oi /xb+W543wXZdkjVIUViM2lPXe4u8DvsurT/tcCBiMSJQuUovANwS6v1LuM6ThuD1+lGy YIliTukJtUhjVd0IcySc1kA7637/GUNkbcgO5rIY38WO2BxlWgNgMmJ6sTGZeYHmvA/G 4yu92drz0WayLLiXhiLHkEhM28d0vjSC9GJaj4wKwbfleCGtc08zPnMh/1OO4HSOEVzs BDi4wwq1GVmhCJj/kI+ObEDWNHLTLV9EKiJXzCOrUGkisdvhM18wz7jmgYctBfT44qlt ghKw== X-Gm-Message-State: AHYfb5jhdBQjxVwRKX8g4ob7rTg0+bn0kiCwJkmZRR/yMB7OSvREbzih iSOdxwp7/h1FTGlu X-Received: by 10.107.202.133 with SMTP id a127mr1118694iog.54.1502881300307; Wed, 16 Aug 2017 04:01:40 -0700 (PDT) Received: from zony ([45.2.119.49]) by smtp.googlemail.com with ESMTPSA id y28sm4843420ita.2.2017.08.16.04.01.39 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 16 Aug 2017 04:01:39 -0700 (PDT) From: npostavs@users.sourceforge.net To: control@debbugs.gnu.org Subject: control message for bug #25025 Date: Wed, 16 Aug 2017 07:03:18 -0400 Message-ID: <87lgmjzseh.fsf@users.sourceforge.net> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.1 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) unarchive 25025 quit From unknown Fri Jun 20 18:08:38 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 18 Sep 2017 11:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator