In bash I set a variable like: o='OneDrive - MyCompany'
. Then I use itby typing: cd "$o"/Docu
. Then I press TAB to do word completion on the folder name. The result is cd $o/Documents
. I hit enter and it fails because it stole my double quotes. HUH!?! I want to use "$o"
as a very fast shortcut for that directory name. I don't want to type "$o/Docu
and then press TAB and then "
, which works. When I start typing I don't want to think about whether I might press TAB to expand something later in the path. I just want to follow the rule to double quote variables, but that doesn't work here.
I really want to be able to put backslashes before the spaces when defining the variable and have them be respected after expanding it. Is there any way I can do that? It would solve this problem so nicely.
What is the best way to deal with this? I don't want to fight the system, but I do want something that feels fast and natural.
Are there any shell settings that I should change to get closer to the expected behavior? I used tcsh for 25 years and am just now switching to bash. There's a lot to learn and tweak. My current shell options are:
$ shopt
autocd off
cdable_vars off
cdspell off
checkhash off
checkjobs on
checkwinsize off
cmdhist on
compat31 off
compat32 off
compat40 off
compat41 off
compat42 off
compat43 off
completion_strip_exe off
complete_fullquote on
direxpand off
dirspell off
dotglob on
execfail off
expand_aliases on
extdebug off
extglob off
extquote on
failglob off
force_fignore on
globasciiranges off
globstar on
gnu_errfmt off
histappend on
histreedit on
histverify on
hostcomplete on
huponexit off
inherit_errexit off
interactive_comments on
lastpipe off
lithist off
login_shell on
mailwarn off
no_empty_cmd_completion off
nocaseglob off
nocasematch off
nullglob off
progcomp on
promptvars on
restricted_shell off
shift_verbose off
sourcepath on
xpg_echo off
Note: This question is different from Why can't I use tab expansion/auto-complete of shell variables with cd? but turns out it has the same answer.