Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选项卡上的Bash变量展开完成_Bash_Readline_Bash Completion - Fatal编程技术网

选项卡上的Bash变量展开完成

选项卡上的Bash变量展开完成,bash,readline,bash-completion,Bash,Readline,Bash Completion,我正在运行Ubuntu11.04,当我试图在bash中使用以变量开头的路径上的制表符补全时,我看到了一些奇怪的行为。如果我有TOP=/scratch,并且我尝试使用tab complete: cd$TOP/foo 改为: cd\$TOP/foo 我希望它能够完成,而不是: cd$TOP/foobar 或 cd/scratch/foobar 但我会接受它只是不改变路线,并要求我取消逃脱美元 有人知道我应该在bash/readline中的什么地方修复此问题吗?找到错误报告,请注册(如果尚未注册)并将

我正在运行Ubuntu11.04,当我试图在bash中使用以变量开头的路径上的制表符补全时,我看到了一些奇怪的行为。如果我有TOP=/scratch,并且我尝试使用tab complete:

cd$TOP/foo

改为:

cd\$TOP/foo

我希望它能够完成,而不是: cd$TOP/foobar 或 cd/scratch/foobar 但我会接受它只是不改变路线,并要求我取消逃脱美元


有人知道我应该在bash/readline中的什么地方修复此问题吗?

找到错误报告,请注册(如果尚未注册)并将自己添加到“受影响的人”列表中,我刚刚做了:

权变措施 尝试启用
direxpand
cdable\u vars

shopt -s direxpand
# or
shopt -s cdable_vars
显然:

我还没有找到一个合适的解决方案,但有一个解决办法。按Esc键,然后按tab键,可以禁用环境变量的转义

# cd $SO + [Esc] + [Tab]
# cd $SOME_DIR

确认这是一个错误!我刚刚证实了同样的方法也适用于

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.10
Release:        10.10
Codename:       maverick
我在(最新的)natty上表现不好:

虽然我必须补充一点,我没有对斜杠进行转义,但是路径(虽然有效、存在、可访问和可读)没有得到扩展。


信息:

在的其他答案中引用的错误报告通过发出以下命令提供了新的解决方法:

shopt -s direxpand

我在cygwin(NT-6.1 2.0.1 2015-04-30)bash(GNU 4.3.33)中遇到了类似的问题,尤其是当我试图用tab键扩展包含空格的路径时


我把
shopt-sdirexpand
放在我的~/.bashrc中。问题已解决。

另一种解决方法:使用+-E或[1]:我的解决方法是:
sudo yum remove bash completion
。Tab complete仍然有效,但仅此而已。重要的是,变量中的路径在点击tab键后不会扩展并保持为变量。我在Centos 8上运行,我看到了相同的恼人行为。Centos 6号天气很好。这是在2020年。这对你来说是如何工作的,我看不出设置或取消设置的行为有什么不同?ESC-^E确实为我展开了适当的变量,这很有帮助。我在Bash4.2.25上
shopt -s direxpand