5
1
I've long set my most-recently visited directories to shell variables d1, d2, etc.
On an ancient Fedora machine I could type a command like
$ cp $d1/
and the shell would replace $d1 with text like /home/acctname/projects/blog/ and would then show me the contents of .../blog, like you would expect any tab-completion to do.
Now, both ubuntu wheezy/sid and fedora 16 just \-escape the '$', and naturally there are no completions to show.
You can see this behavior in action in an OSX Terminal window. On 10.8, do something like
ls $HOME/ to see what I mean.
Is there a bash shell variable or option that can restore the old behavior?
man bash
suggests this is a bug:
complete (TAB)
Attempt to perform completion on the text before point. Bash
attempts completion treating the text as a variable (if the text
begins with $), username (if the text begins with ~), hostname (if
the text begins with @), or command (including aliases and functions)
in turn. If none of these produces a match, filename completion is
attempted.
I get the above described completion when a token starts with '~' or a letter. It's just '$'-completion that's broken.
@Eric - you don't. If you have stuff that needs formatting that is relevant to your question, add it to the question instead. – ghoti – 2017-06-01T15:39:12.143
I really wanted to check this off, but I got this result:
ericp@pacer:apps $ shopt -s direxpand bash: shopt: direxpand: invalid shell option name
ericp@pacer:client $ bash --version GNU bash, version 4.2.24(1)-release (x86_64-pc-linux-gnu)
ericp@pacer:client $ echo $BASHOPTS checkwinsize:cmdhist:expand_aliases:extglob:extquote: force_fignore:histappend:interactive_comments:progcomp: promptvars:sourcepath
This is on Ubuntu 12.04.1 LTS – Eric – 2012-10-26T16:16:05.527
1How do I add newlines in stackexchange comments? – Eric – 2012-10-26T16:16:28.163