Bash 파일 완성으로 Python 가상 환경 생성

Bash 파일 완성으로 Python 가상 환경 생성

때때로 bash 셸에서 탭 완성을 사용할 때 탭 완성을 표시하고 현재 디렉터리에 Python 가상 환경을 생성하기 전에 1~2초 동안 일시 중지됩니다.

예를 들어, 라는 단일 파일이 포함된 디렉터리에서 명령을 실행하고 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만 사용하므로 ~/binbash 스크립트와 임의의 python 스크립트가 혼합되어 있습니다.

불행히도 이 문제를 안정적으로 재현할 수는 없지만 더 복잡한 파일(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_completionPastebin에 의해 거부되었지만 헤더에 최신 버전이 켜져 있음이 표시됩니다. 깃허브

관련 정보