在我的文件中.bash_profile
,我设置了短变量来简化对一些常见目录的访问。例如:
lh=/var/log/httpd
hc=/etc/httpd/conf
所以我像这样使用它:
$ cd $lh
$ less $lh/access_log
但是,当我想使用 Tab 键来自动完成文件名时(在包含变量引用的参数中),bash 会执行自动完成,但还会\
在变量名称的美元符号之前插入反斜杠。
例如,键入less $lh/acc
然后按 Tab 键将扩展为:less \$lh/access_log
。
当然,我想要的是less $lh/access_log
或者less /var/log/httpd/access_log
。 (奇怪的是,cd
在这种情况下,使用命令自动完成根本不起作用,这个问题已经讨论过了)
我知道可以使用shell-expand-line
(default key: Ctrl+ Alt+ E) 来替代,但它远非完美,因为它也扩展了别名,并且它不引用带有特殊字符(空格,...)的路径。
bash 有没有办法用 Tab 扩展文件名,即使路径中使用了 shell 变量?
答案1
问题是direxpand
未设置 shell 选项。以下解决了该问题:
shopt -s direxpand