有时,当我在 bash shell 中使用制表符文件完成时,它会在显示制表符完成之前暂停一两秒,并在当前目录中创建一个 Python 虚拟环境。
例如,如果我在包含名为的单个文件的目录中运行命令example.pdf
,并希望制表符补全来完成该命令:
$ ls
example.pdf
$ pdf2txt example<tab>
$ pdf2txt example.pdf
This file has text.
$ ls
bin example.pdf lib lib64 include pyvenv.cfg
结果是我要么必须删除所有这些文件,要么接受我的目录将充满神秘的 python 虚拟环境。在我的主目录中,仅使用由 bash 选项卡补全产生的 python venv ~/bin
,因此我有随机的 python 脚本与我的 bash 脚本混合在一起。
不幸的是,我无法可靠地重现这个问题,但我的感觉是,当存在更复杂的文件(pdf、docx 等)时,就会出现此问题。
由于问题的性质,我无法通过网络搜索进行故障排除,因为所有结果都是关于在编写 Python 脚本时实现制表符补全。
系统信息:
OS: Fedora 36 (though problem started around F34)
Kernel: 5.17.13-300.fc36.x86_64
python 文件的有限递归列表(我假设 venv 文件每次都是相同的):
$ find . -maxdepth 2
./bin
./bin/python3
./bin/python
./bin/python3.10
./bin/pip
./bin/pip3
./bin/pip3.10
./bin/Activate.ps1
./bin/activate
./bin/activate.csh
./bin/activate.fish
./include
./lib
./lib/python3.10
./pyvenv.cfg
完整文件清单:
tree
在这儿
ls -R
在这儿
相关文件bash_completion
:
/etc/profile.d/bash_completion
看起来相当正常
~/.config/bash_completion
不存在
/usr/share/bash-completion/bash_completion
被pastebin拒绝,但标头显示最新版本已开启 github