Hi, 2010-10-24 00:22, Jonathan Nieder skrev: > Per Olofsson wrote: > >> Again, why not simply >> >> $EDITOR "$1" > > Because that is a weird hybrid of two behaviors: > > 1. "$EDITOR" "$1" > > does not respect shell metacharacters at all, so if you use, e.g., > EDITOR='emacs -nw', then it will look for a binary with that name.
No good. > Advantage: can be used by C programs directly using exec(). > > 2. sh -c '<the editor> "$1"' - filename > > respects _all_ shell metacharacters, including pipes, variable > expansions, redirections etc. It might also leave a shell process hanging around. So maybe sh -c "exec $EDITOR \"\$1\"" - "$filename" ? > > 3. $EDITOR "$1" > > respects only the shell metacharacters that have to do with > word splitting (if I remember correctly). In fact, it seems to only support word splitting. No quotes or anything else. > It is hard to use from > C programs --- I think you have to first export EDITOR, then run > > sh -c '$EDITOR "$1"' - filename OK. So maybe option 2 is the best one then. >> Yeah, putting metacharacters in a variable is asking for trouble anyway. > > On e.g. Windows it is common to have filenames with spaces. It can > also be convenient to pass options with commands like this. > > Anyway, luckily it is always possible to get whatever effect is > desired with a well-placed script. It's nice to be able to say EDITOR="emacs -nw" I think. I'm not sure how important it is to be able to quote spaces and such though. Still, if option 2 is easier to implement from C programs, perhaps it's the best option. -- Pelle -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org