朋友们,
我在 Linux 上使用 GNU bash 作为我的 shell:
$ bash --version
GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$
当我设置一个以 FS 路径作为其值的环境变量时,它的行为非常奇怪。
假设我想将 /opt/database/bin 添加到 PATH 的前面。
我首先输入:
$ export PATH=/o
然后我按下键盘上的 Tab 键。
但是它并没有完成 /opt 的路径,而是删除了 PATH= 部分!相反,我得到的是:
$ export /opt/
当然,这对我来说毫无用处,而且非常烦人!然后我需要手动添加环境变量名称,这根本不是我想要做的!
我希望它能完成到这个样子:
$ export PATH=/opt/
然后我可以使用最少的输入和 Tab 键来完成其余的路径。
有什么方法可以让它不删除环境变量,并以合理的方式运行,从而最大限度地提高我的工作效率?
答案1
尝试禁用 Bash 完成。
不过,在使用 Bash-Completion 的系统上,您的PATH
补全功能对我来说是有效的。您可以尝试卸载并重新安装它,看看它是否有效。我发现它提供的功能太有用了,不能放弃。
答案2
完全禁用 Bash-Completion 可能有点过头了。这是一个非常有用且高效的功能。
您描述的损坏通常是/etc/bash_completion.d/
由第三方.deb
软件包安装的特定 bash 完成配置脚本引起的。
我在 Ubuntu 上遇到了完全相同的问题,对我来说,罪魁祸首是 Debian 包(包含 Node.js 的包管理器)/etc/bash_completion.d/npm
安装的脚本。npm
我刚刚将npm
脚本移出/etc/bash_completion.d/
- 问题解决了,并且保留了有用的 Bash 完成功能。