Bash 文件补全创建 Python 虚拟环境

Bash 文件补全创建 Python 虚拟环境

有时,当我在 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

相关内容