?path.expand Expand a path name, for example by replacing a leading tilde by the user's home directory (if defined on that platform).
*A* path name. The argument is a character vector. If multiple path names are passed, they are passed On most builds of R *A LEADING* "~user" will be replaced... Nothing is said in the R documentation about *multiple* or *non-leading* tildes being replaced. The actual behaviour is inconsistent with the documentation. SOMETHING is a bug. It's not clear to me why this is in any way dependent on readline. I've implemented tilde expansion several times and always without readline. It sounds as though R might be calling tilde_expand() when it *should*, to be consistent with the documentation, be calling tilde_expand_word(). as separate elements of the character vector. On Sat, 8 Jun 2019 at 04:10, Berry, Charles <ccbe...@ucsd.edu> wrote: > > > > On Jun 6, 2019, at 2:04 PM, Richard O'Keefe <rao...@gmail.com> wrote: > > > > How can expanding tildes anywhere but the beginning of a file name NOT be > > considered a bug? > > > > > > I think that that IS what libreadline is doing if one allows a whitespace > separated list of file names. > > As reported in R-help, > > https://www.mail-archive.com/r-help@r-project.org/msg254116.html > > path.expand seems to expand tildes beginning whitespace separated strings > that could be filenames, but not other tildes. > > Thus, > > > path.expand("~/.newsrc ~/.R/*") # expands both tildes > [1] "/Users/cberry/.newsrc /Users/cberry/.R/*" > > path.expand("~/.newsrc~/.R/*") # expands only the first > [1] "/Users/cberry/.newsrc~/.R/*" > > > > This could be a feature if what one wanted was to pass the result to a > system command that will process multiple file arguments, e.g. > > > system(paste( "wc", path.expand("~/.newsrc ~/.R/*"))) # run wc on some > files > > I doubt that this was intended by R-core, but perhaps the readline devs > had this in mind. > > Chuck > > > > On Thu, 6 Jun 2019 at 23:04, Ivan Krylov <krylov.r...@gmail.com> wrote: > > > >> On Wed, 5 Jun 2019 18:07:15 +0200 > >> Frank Schwidom <schwi...@gmx.net> wrote: > >> > >>> +> path.expand("a ~ b") > >>> [1] "a /home/user b" > >> > >>> How can I switch off any file crippling activity? > >> > >> It doesn't seem to be possible if readline is enabled and works > >> correctly. > >> > >> Calls to path.expand [1] end up [2] in R_ExpandFileName [3], which > >> calls R_ExpandFileName_readline [4], which uses libreadline function > >> tilde_expand [5]. tilde_expand seems to be designed to expand '~' > >> anywhere in the string it is handed, i.e. operate on whole command > >> lines, not file paths. > >> > >> I am taking the liberty of Cc-ing R-devel in case this can be > >> considered a bug. > >> > >> -- > >> Best regards, > >> Ivan > >> > >> [1] > >> > >> > https://github.com/wch/r-source/blob/12d1d2d232d84aa355e333348b81180a0e2c6f2f/src/main/names.c#L807 > >> > >> [2] > >> > >> > https://github.com/wch/r-source/blob/12d1d2d232d84aa355e333348b81180a0e2c6f2f/src/main/platform.c#L1915 > >> > >> [3] > >> > >> > https://github.com/wch/r-source/blob/12d1d2d232d84aa355e333348b81180a0e2c6f2f/src/unix/sys-unix.c#L147 > >> > >> [4] > >> > >> > https://github.com/wch/r-source/blob/12d1d2d232d84aa355e333348b81180a0e2c6f2f/src/unix/sys-std.c#L494 > >> > >> [5] > >> > https://git.savannah.gnu.org/cgit/readline.git/tree/tilde.c?h=devel#n187 > >> > >> ______________________________________________ > >> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > >> https://stat.ethz.ch/mailman/listinfo/r-help > >> PLEASE do read the posting guide > >> http://www.R-project.org/posting-guide.html > >> and provide commented, minimal, self-contained, reproducible code. > >> > > > > [[alternative HTML version deleted]] > > > > > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.