bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#54487: 29.0.50; connection-local value for `shell-file-name' not set


From: Jim Porter
Subject: bug#54487: 29.0.50; connection-local value for `shell-file-name' not set in Dired buffers over Tramp
Date: Sun, 20 Mar 2022 21:58:56 -0700

Hopefully I've summarized the issue correctly in the bug title. To see this in action, run the following from `emacs -Q' on an MS-Windows system ("host" in this example is a remote GNU/Linux system):

  C-x C-f /ssh:host:~
  M-x rgrep RET
  some text RET RET RET

The rgrep output will look something like:

  find [...] --null -e "some text" "{}" +
  find: paths must precede expression: `^^!^'

You can click the "[...]" to see the full invocation. However, even without doing that, if you look carefully, you'll notice that the shell-quoting uses the MS-Windows rules, not that of /bin/sh. For the MS-Windows shell, spaces are quoted by wrapping the entire argument in double-quotes ("like this"); for /bin/sh, spaces are escaped via a backslash (like\ this).

Presumably, that's because if you eval `shell-file-name' in the Dired buffer, it reports ".../path/to/cmdproxy.exe". When in a remote *file*, `shell-file-name' is correctly set to "/bin/sh".

This also comes up in other (non-Dired) situations. For example:

  C-x C-f /ssh:host:~/some-file.txt
  M-x rgrep RET
  some text RET RET RET
  ;; everything looks ok

  ;; now, from the rgrep buffer...
  M-x rgrep
  some text RET RET RET
  ;; same error as in the original case above





reply via email to

[Prev in Thread] Current Thread [Next in Thread]