GNU bug report logs - #47790
27.2; XDG_DATA_HOME evaluation in move-file-to-trash

Previous Next

Package: emacs;

Reported by: Thierry Volpiatto <thievol <at> posteo.net>

Date: Thu, 15 Apr 2021 08:06:01 UTC

Severity: normal

Tags: notabug

Found in version 27.2

Done: "Basil L. Contovounesios" <contovob <at> tcd.ie>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 47790 in the body.
You can then email your comments to 47790 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#47790; Package emacs. (Thu, 15 Apr 2021 08:06:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Thierry Volpiatto <thievol <at> posteo.net>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 15 Apr 2021 08:06:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Thierry Volpiatto <thievol <at> posteo.net>
To: bug-gnu-emacs <at> gnu.org
Subject: 27.2; XDG_DATA_HOME evaluation in move-file-to-trash
Date: Thu, 15 Apr 2021 10:05:04 +0200
In `move-file-to-trash` there is this code:

    (or (getenv "XDG_DATA_HOME")
        "~/.local/share")

If XDG_DATA_HOME is not set getenv returns nil and that's fine, if
XDG_DATA_HOME is set to a file path this path is returned and it's fine
as well, however if user follow recommendations of
https://specifications.freedesktop.org/basedir-spec/latest/ar01s03.html
and set XDG_DATA_HOME to "$HOME/.local/share" then the above block will
return this value from getenv which is wrong, `substitute-in-file-name`
should be used here.

    (setenv "XDG_DATA_HOME" "$HOME/.local/share")
    (or (getenv "XDG_DATA_HOME")
         "~/.local/share")
    ==> "$HOME/.local/share"
    (substitute-in-file-name
     (or (getenv "XDG_DATA_HOME")
         "~/.local/share"))
    ==> /home/you/.local/share

Not far after in the code tou have this block that attempt to create the
trash directory:

    ;; Ensure that the trash directory exists; otherwise, create it.
    (with-file-modes #o700
      (unless (file-exists-p trash-files-dir)
        (make-directory trash-files-dir t))
      (unless (file-exists-p trash-info-dir)
        (make-directory trash-info-dir t)))

which expand to (make-directory "$HOME/.local/share" t)



In GNU Emacs 27.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30, cairo version 1.15.10)
 of 2021-03-25 built on IPadS340
Windowing system distributor 'The X.Org Foundation', version 11.0.12008000
System Description: Linux Mint 19.3

Recent messages:
Mark set [3 times]
Auto-saving...done
Mark set [2 times]
Auto-saving...done
Send this bug report to the Emacs maintainers? (y or n) y
Quit
Mark set [2 times]
Message modified; kill anyway? (y or n) y
[mu4e] Switch to Posteo
[mu4e] Switched context to Posteo

Configured using:
 'configure CFLAGS=-O8 --without-dbus --without-gconf
 --without-gsettings --with-mailutils --with-cairo'

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM GLIB NOTIFY INOTIFY ACL
LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD JSON
PDUMPER LCMS2 GMP

Important settings:
  value of $LANG: fr_FR.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Ilisp

Minor modes in effect:
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  global-ligature-mode: t
  ligature-mode: t
  psession-mode: t
  psession-savehist-mode: t
  global-git-gutter-mode: t
  eldoc-in-minibuffer-mode: t
  display-time-mode: t
  winner-mode: t
  show-paren-mode: t
  helm-epa-mode: t
  helm-descbinds-mode: t
  override-global-mode: t
  helm-adaptive-mode: t
  helm-mode: t
  shell-dirtrack-mode: t
  helm-popup-tip-mode: t
  async-bytecomp-package-mode: t
  dired-async-mode: t
  minibuffer-depth-indicate-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-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

Load-path shadows:
None found.

Features:
(epa-mail autocrypt-mu4e addressbook-bookmark mu4e-config org-mu4e
mu4e-patch mu4e-contrib eshell esh-cmd esh-ext esh-opt esh-proc esh-io
esh-arg esh-module esh-groups esh-util mu4e mu4e-org mu4e-main mu4e-view
mu4e-view-gnus gnus-art mm-uu mml2015 mm-view mml-smime smime dig
mu4e-view-common mu4e-headers mu4e-compose mu4e-context mu4e-draft
mu4e-actions ido rfc2368 smtpmail mu4e-mark mu4e-proc mu4e-utils
mu4e-lists mu4e-message flow-fill hl-line mu4e-vars mu4e-meta helm-ring
shadow sort autocrypt-message autocrypt mail-extr emacsbug sendmail
tabify pulse view helm-dabbrev magit-extras face-remap magit-bookmark
magit-submodule magit-obsolete magit-blame magit-stash magit-reflog
magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit-status
magit magit-repos magit-apply magit-wip magit-log which-func magit-diff
git-commit log-edit add-log magit-core magit-autorevert autorevert
magit-margin magit-transient magit-process with-editor magit-mode
transient magit-git magit-section smerge-mode ol-eww eww mm-url
url-queue ol-rmail ol-mhe ol-irc ol-info ol-gnus nnir gnus-sum shr svg
dom gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail mail-source
utf7 netrc nnoo gnus-spec gnus-int gnus-range message rmc puny rfc822
mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader gnus-win gnus nnheader gnus-util rmail
rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils mm-util mail-prsvr
ol-docview doc-view jka-compr image-mode exif ol-bibtex bibtex ol-bbdb
ol-w3m ox-texinfo ox-odt rng-loc rng-uri rng-parse rng-match rng-dt
rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex
ox-icalendar ox-html table ox-ascii ox-publish ox org-element avl-tree
generator helm-x-files helm-for-files helm-bookmark bookmark
text-property-search pp magit-utils crm image-file eieio-opt speedbar
sb-image ezimage dframe help-fns radix-tree helm-command tramp-archive
tramp-gvfs dbus bug-reference texinfo naquadah-theme solar cal-dst
holidays hol-loaddefs tv-utils undo-tree diff undo-tree-autoloads rx
ligature ligature-autoloads boxquote rect rainbow-mode-autoloads
psession frameset wgrep-helm wgrep grep compile wgrep-autoloads log-view
pcvs-util pcmpl-git pcmpl-git-autoloads toc-org-autoloads cl-indent ffap
markdown-toc-autoloads markdown-mode-autoloads autocrypt-autoloads
config-w3m w3m-autoloads git-gutter git-gutter-autoloads mule-util appt
diary-lib diary-loaddefs gud anaconda-mode xref project pythonic f dash
s anaconda-mode-autoloads pythonic-autoloads f-autoloads s-autoloads
eldoc-eval emamux-autoloads magit-autoloads git-commit-autoloads
with-editor-autoloads transient-autoloads dash-autoloads
pcomplete-extension pcmpl-unix pcmpl-gnu iterator iedit-autoloads
ledger-mode-autoloads wdired dired-extension org-config ob-gnuplot
org-crypt net-utils time pcase all-the-icons all-the-icons-faces
data-material data-weathericons data-octicons data-fileicons
data-faicons data-alltheicons all-the-icons-autoloads winner w3m-wget
wget thingatpt wget-sysdep autotest-mode autoconf-mode paren woman man
ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init
ediff-util init-helm helm-fd epa derived epg epg-config helm-epa
helm-misc helm-imenu imenu helm-elisp-package package url-handlers
helm-find helm-org org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-footnote org-src ob-comint org-pcomplete org-list
org-faces org-entities noutline outline org-version ob-emacs-lisp
ob-core ob-eval org-table ol org-keys org-compat org-macs org-loaddefs
cal-menu calendar cal-loaddefs helm-external helm-net browse-url xml url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util url-parse url-vars mailcap isearch-light
helm-descbinds helm-ls-git vc-git diff-mode vc vc-dispatcher
helm-ipython helm-elisp helm-eval edebug backtrace find-func helm-info
python tramp-sh use-package-bind-key bind-key popup helm-adaptive
diminish helm-mode helm-files filenotify tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat shell pcomplete comint ansi-color
ring parse-time iso8601 time-date ls-lisp auth-source password-cache
json map helm-buffers helm-occur helm-tags helm-locate helm-grep
helm-regexp format-spec helm-utils helm-help helm-types
use-package-diminish cus-edit wid-edit helm-extensions-autoloads
helm-config helm-autoloads helm easy-mmode async-bytecomp
helm-global-bindings helm-easymenu helm-source eieio eieio-core
eieio-loaddefs helm-multi-match helm-lib dired-async advice dired-aux
dired dired-loaddefs async emms-autoloads finder-inf use-package-core
popup-autoloads diminish-autoloads mb-depth server edmacro kmacro avoid
cus-start cus-load use-package-autoloads bind-key-autoloads
straight-autoloads info cl-seq cl-extra help-mode easymenu seq byte-opt
straight subr-x cl-macs gv bytecomp byte-compile cconv cl-loaddefs
cl-lib tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame minibuffer cl-generic
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded 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 threads inotify lcms2
dynamic-setting font-render-setting cairo move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 649069 319435)
 (symbols 48 44038 53)
 (strings 32 196654 33273)
 (string-bytes 1 6313668)
 (vectors 16 85685)
 (vector-slots 8 1839586 200322)
 (floats 8 1943 870)
 (intervals 56 18271 9156)
 (buffers 1000 117))
<#secure method=pgpmime mode=sign>

-- 
Thierry




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47790; Package emacs. (Thu, 15 Apr 2021 08:22:02 GMT) Full text and rfc822 format available.

Message #8 received at 47790 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Thierry Volpiatto <thievol <at> posteo.net>
Cc: 47790 <at> debbugs.gnu.org
Subject: Re: bug#47790: 27.2; XDG_DATA_HOME evaluation in move-file-to-trash
Date: Thu, 15 Apr 2021 11:20:49 +0300
> From: Thierry Volpiatto <thievol <at> posteo.net>
> Date: Thu, 15 Apr 2021 10:05:04 +0200
> 
> 
> In `move-file-to-trash` there is this code:
> 
>     (or (getenv "XDG_DATA_HOME")
>         "~/.local/share")
> 
> If XDG_DATA_HOME is not set getenv returns nil and that's fine, if
> XDG_DATA_HOME is set to a file path this path is returned and it's fine
> as well, however if user follow recommendations of
> https://specifications.freedesktop.org/basedir-spec/latest/ar01s03.html
> and set XDG_DATA_HOME to "$HOME/.local/share" then the above block will
> return this value from getenv which is wrong, `substitute-in-file-name`
> should be used here.
> 
>     (setenv "XDG_DATA_HOME" "$HOME/.local/share")

Is this a valid setting of an environment variable?  IOW, are values
of environment variables allowed to reference other environment
variables, and thus are applications required to recursively expand
the values of environment variables until no references are left?
And, as a corollary, does it mean that '$' in file names are not
supported by environment variables whose values are file names?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47790; Package emacs. (Thu, 15 Apr 2021 10:48:01 GMT) Full text and rfc822 format available.

Message #11 received at 47790 <at> debbugs.gnu.org (full text, mbox):

From: Thierry Volpiatto <thievol <at> posteo.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 47790 <at> debbugs.gnu.org
Subject: Re: bug#47790: 27.2; XDG_DATA_HOME evaluation in move-file-to-trash
Date: Thu, 15 Apr 2021 12:37:20 +0200
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes:

> Is this a valid setting of an environment variable?

Probably not in emacs with setenv, but in a .profile or .bash_profile,
maybe, at least according to
https://specifications.freedesktop.org/basedir-spec/latest/ar01s03.html
but is is up to you to decide if it is right or not to create a $HOME
directory which is a copy of the $HOME directory in the back of the user
each time he trashes a file with such setting (I added a warning in helm
documentation years ago about this).

-- 
Thierry
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47790; Package emacs. (Thu, 15 Apr 2021 12:13:01 GMT) Full text and rfc822 format available.

Message #14 received at 47790 <at> debbugs.gnu.org (full text, mbox):

From: "Basil L. Contovounesios" <contovob <at> tcd.ie>
To: Thierry Volpiatto <thievol <at> posteo.net>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 47790 <at> debbugs.gnu.org
Subject: Re: bug#47790: 27.2; XDG_DATA_HOME evaluation in move-file-to-trash
Date: Thu, 15 Apr 2021 13:12:29 +0100
Thierry Volpiatto <thievol <at> posteo.net> writes:

> Eli Zaretskii <eliz <at> gnu.org> writes:
>
>> Is this a valid setting of an environment variable?
>
> Probably not in emacs with setenv, but in a .profile or .bash_profile,
> maybe,

In shell RC files, double quotes would expand any contained variables.

> at least according to
> https://specifications.freedesktop.org/basedir-spec/latest/ar01s03.html

That spec doesn't say anything about variable expansion in different
contexts.  IME when someone says "set FOO to $HOME/.foo" without any
further qualification they are implicitly referring to the expansion of
$HOME.

FWIW,

-- 
Basil




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47790; Package emacs. (Thu, 15 Apr 2021 12:24:01 GMT) Full text and rfc822 format available.

Message #17 received at 47790 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: "Basil L. Contovounesios" <contovob <at> tcd.ie>
Cc: thievol <at> posteo.net, 47790 <at> debbugs.gnu.org
Subject: Re: bug#47790: 27.2; XDG_DATA_HOME evaluation in move-file-to-trash
Date: Thu, 15 Apr 2021 15:23:36 +0300
> From: "Basil L. Contovounesios" <contovob <at> tcd.ie>
> Cc: Eli Zaretskii <eliz <at> gnu.org>,  47790 <at> debbugs.gnu.org
> Date: Thu, 15 Apr 2021 13:12:29 +0100
> 
> IME when someone says "set FOO to $HOME/.foo" without any further
> qualification they are implicitly referring to the expansion of
> $HOME.

That's what I knew, but Thierry seems to say otherwise.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47790; Package emacs. (Sat, 24 Apr 2021 07:24:01 GMT) Full text and rfc822 format available.

Message #20 received at 47790 <at> debbugs.gnu.org (full text, mbox):

From: Thierry Volpiatto <thievol <at> posteo.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: "Basil L. Contovounesios" <contovob <at> tcd.ie>, 47790 <at> debbugs.gnu.org
Subject: Re: bug#47790: 27.2; XDG_DATA_HOME evaluation in move-file-to-trash
Date: Sat, 24 Apr 2021 07:14:27 +0000
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: "Basil L. Contovounesios" <contovob <at> tcd.ie>
>> Cc: Eli Zaretskii <eliz <at> gnu.org>,  47790 <at> debbugs.gnu.org
>> Date: Thu, 15 Apr 2021 13:12:29 +0100
>> 
>> IME when someone says "set FOO to $HOME/.foo" without any further
>> qualification they are implicitly referring to the expansion of
>> $HOME.
>
> That's what I knew, but Thierry seems to say otherwise.

Well, it is common to set PATH like this:

PATH="$HOME/bin:$PATH"

you find this in ~/.profile or ~/.bashrc on many distros.
I didn't find documentaion about this though.
Anyway the problem is if one do this with XDG_DATA_HOME and trash files
from different directories, a copy of his home directory will be done in
each of those directories under literally "$HOME/user".
If you consider this is fine and normal you can close this bug report.

Thanks.

-- 
Thierry
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47790; Package emacs. (Sat, 24 Apr 2021 11:00:02 GMT) Full text and rfc822 format available.

Message #23 received at 47790 <at> debbugs.gnu.org (full text, mbox):

From: "Basil L. Contovounesios" <contovob <at> tcd.ie>
To: Thierry Volpiatto <thievol <at> posteo.net>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 47790 <at> debbugs.gnu.org
Subject: Re: bug#47790: 27.2; XDG_DATA_HOME evaluation in move-file-to-trash
Date: Sat, 24 Apr 2021 11:58:51 +0100
Thierry Volpiatto <thievol <at> posteo.net> writes:

> Eli Zaretskii <eliz <at> gnu.org> writes:
>
>>> From: "Basil L. Contovounesios" <contovob <at> tcd.ie>
>>> Cc: Eli Zaretskii <eliz <at> gnu.org>,  47790 <at> debbugs.gnu.org
>>> Date: Thu, 15 Apr 2021 13:12:29 +0100
>>> 
>>> IME when someone says "set FOO to $HOME/.foo" without any further
>>> qualification they are implicitly referring to the expansion of
>>> $HOME.
>>
>> That's what I knew, but Thierry seems to say otherwise.
>
> Well, it is common to set PATH like this:
>
> PATH="$HOME/bin:$PATH"
>
> you find this in ~/.profile or ~/.bashrc on many distros.

Any variables enclosed in double quotes "..." are expanded when this
expression is evaluated by the shell.

You can confirm this by running 'echo "$PATH"'.

> I didn't find documentaion about this though.

See one of the following:
- 'man 1 dash', headings 'Double Quotes' and 'Parameter Expansion'.
- 'man 1 bash', headings 'QUOTING' and 'Parameter Expansion'.
- (info "(bash) Double Quotes")
  https://gnu.org/software/bash/manual/html_node/Double-Quotes.html

> Anyway the problem is if one do this with XDG_DATA_HOME and trash files
> from different directories, a copy of his home directory will be done in
> each of those directories under literally "$HOME/user".

But this only happens when you set XDG_DATA_HOME to a string that
includes shell variables, right?  If so...

> If you consider this is fine and normal you can close this bug report.

...then I don't think that was ever implied as being supported, and I
don't see the need to support it, but that's just one impression.

Thanks,

-- 
Basil




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47790; Package emacs. (Sat, 24 Apr 2021 11:35:01 GMT) Full text and rfc822 format available.

Message #26 received at 47790 <at> debbugs.gnu.org (full text, mbox):

From: Thierry Volpiatto <thievol <at> posteo.net>
To: "Basil L. Contovounesios" <contovob <at> tcd.ie>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 47790 <at> debbugs.gnu.org
Subject: Re: bug#47790: 27.2; XDG_DATA_HOME evaluation in move-file-to-trash
Date: Sat, 24 Apr 2021 11:30:06 +0000
[Message part 1 (text/plain, inline)]
"Basil L. Contovounesios" <contovob <at> tcd.ie> writes:

> Thierry Volpiatto <thievol <at> posteo.net> writes:
>
>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>
>>>> From: "Basil L. Contovounesios" <contovob <at> tcd.ie>
>>>> Cc: Eli Zaretskii <eliz <at> gnu.org>,  47790 <at> debbugs.gnu.org
>>>> Date: Thu, 15 Apr 2021 13:12:29 +0100
>>>> 
>>>> IME when someone says "set FOO to $HOME/.foo" without any further
>>>> qualification they are implicitly referring to the expansion of
>>>> $HOME.
>>>
>>> That's what I knew, but Thierry seems to say otherwise.
>>
>> Well, it is common to set PATH like this:
>>
>> PATH="$HOME/bin:$PATH"
>>
>> you find this in ~/.profile or ~/.bashrc on many distros.
>
> Any variables enclosed in double quotes "..." are expanded when this
> expression is evaluated by the shell.
>
> You can confirm this by running 'echo "$PATH"'.

I already know this.

>> I didn't find documentaion about this though.
>
> See one of the following:
> - 'man 1 dash', headings 'Double Quotes' and 'Parameter Expansion'.
> - 'man 1 bash', headings 'QUOTING' and 'Parameter Expansion'.
> - (info "(bash) Double Quotes")
>   https://gnu.org/software/bash/manual/html_node/Double-Quotes.html

I know this as well... but this is unrelated to the problem you have in
emacs.

>> Anyway the problem is if one do this with XDG_DATA_HOME and trash files
>> from different directories, a copy of his home directory will be done in
>> each of those directories under literally "$HOME/user".
>
> But this only happens when you set XDG_DATA_HOME to a string that
> includes shell variables, right?  If so...
>
>> If you consider this is fine and normal you can close this bug report.
>
> ...then I don't think that was ever implied as being supported, and I
> don't see the need to support it, but that's just one impression.

Fair enough, so you can close this.

Thanks.

-- 
Thierry
[signature.asc (application/pgp-signature, inline)]

Added tag(s) notabug. Request was from "Basil L. Contovounesios" <contovob <at> tcd.ie> to control <at> debbugs.gnu.org. (Sat, 24 Apr 2021 12:20:02 GMT) Full text and rfc822 format available.

bug closed, send any further explanations to 47790 <at> debbugs.gnu.org and Thierry Volpiatto <thievol <at> posteo.net> Request was from "Basil L. Contovounesios" <contovob <at> tcd.ie> to control <at> debbugs.gnu.org. (Sat, 24 Apr 2021 12:20:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47790; Package emacs. (Sat, 24 Apr 2021 12:20:03 GMT) Full text and rfc822 format available.

Message #33 received at 47790-done <at> debbugs.gnu.org (full text, mbox):

From: "Basil L. Contovounesios" <contovob <at> tcd.ie>
To: Thierry Volpiatto <thievol <at> posteo.net>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 47790-done <at> debbugs.gnu.org
Subject: Re: bug#47790: 27.2; XDG_DATA_HOME evaluation in move-file-to-trash
Date: Sat, 24 Apr 2021 13:19:46 +0100
tags 47790 notabug
close 47790
quit

Thierry Volpiatto <thievol <at> posteo.net> writes:

> "Basil L. Contovounesios" <contovob <at> tcd.ie> writes:
>
>> Thierry Volpiatto <thievol <at> posteo.net> writes:
>>
>>> Eli Zaretskii <eliz <at> gnu.org> writes:
>>>
>>>>> From: "Basil L. Contovounesios" <contovob <at> tcd.ie>
>>>>> Cc: Eli Zaretskii <eliz <at> gnu.org>,  47790 <at> debbugs.gnu.org
>>>>> Date: Thu, 15 Apr 2021 13:12:29 +0100
>>>>> 
>>>>> IME when someone says "set FOO to $HOME/.foo" without any further
>>>>> qualification they are implicitly referring to the expansion of
>>>>> $HOME.
>>>>
>>>> That's what I knew, but Thierry seems to say otherwise.
>>>
>>> Well, it is common to set PATH like this:
>>>
>>> PATH="$HOME/bin:$PATH"
>>>
>>> you find this in ~/.profile or ~/.bashrc on many distros.
>>
>> Any variables enclosed in double quotes "..." are expanded when this
>> expression is evaluated by the shell.
>>
>> You can confirm this by running 'echo "$PATH"'.
>
> I already know this.
>
>>> I didn't find documentaion about this though.
>>
>> See one of the following:
>> - 'man 1 dash', headings 'Double Quotes' and 'Parameter Expansion'.
>> - 'man 1 bash', headings 'QUOTING' and 'Parameter Expansion'.
>> - (info "(bash) Double Quotes")
>>   https://gnu.org/software/bash/manual/html_node/Double-Quotes.html
>
> I know this as well... but this is unrelated to the problem you have in
> emacs.

I never said it was related, but you used these shell examples to argue
that Emacs should expand shell variables present in environment variable
strings.

I was pointing out that your examples imply the opposite: that the shell
expands the variables long before they enter the environment (equivalent
to the use of substitute-in-file-name in the OP).

So Emacs is not necessarily behaving any differently to other programs
that query their environment, based on these examples.

>>> Anyway the problem is if one do this with XDG_DATA_HOME and trash files
>>> from different directories, a copy of his home directory will be done in
>>> each of those directories under literally "$HOME/user".
>>
>> But this only happens when you set XDG_DATA_HOME to a string that
>> includes shell variables, right?  If so...
>>
>>> If you consider this is fine and normal you can close this bug report.
>>
>> ...then I don't think that was ever implied as being supported, and I
>> don't see the need to support it, but that's just one impression.
>
> Fair enough, so you can close this.

Thanks, done.  We can always reopen it if new information comes to
light.

-- 
Basil




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 23 May 2021 11:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 310 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.