bash 완료 기능은 어디에서 제공되나요?

bash 완료 기능은 어디에서 제공되나요?

Raspbian (Debian Wheezy)을 실행하는 Raspberry Pi가 있습니다. 터미널에 들어가 보니 set긴 목록에 놀랐다. 이것은 거의 전적으로 git 함수인 것 같습니다(약 3700줄).

__git_all_commands=
__git_diff_common_options=$'--stat --numstat --shortstat --summary\n\t\t\t--patch-with-stat --name-only 
...

내 질문은 그들이 어떻게 거기에 도착했고 왜 그랬는가입니다.

가끔 git택배를 받아요.

평소 용의자를 모두 확인해봤습니다 /etc/profile,,,/etc/bash.bashrc.bashrc.profile


스크립트를 찾았습니다 /etc/bash_completion.d/git(이전에 bash_completion에 대해 들어본 적이 없습니다). 그것이 무엇을 하는지, 정확히 어디에서 호출되는지 알아내기 위해 더 많은 연구를 해야 할 것입니다.

아직은 알아내야 해git1년에 한두 번만 사용하면 모든 로그인 셸에서 실행하고 싶습니다. (라즈베리 파이에는 RAM이 너무 많지 않습니다.) 내 Mac에서는 이런 일이 발생하지 않는 것 같습니다.

답변1

이러한 기능은 쉘 쌍입니다 git. Git 소프트웨어의 일부로 유지됩니다. Debian(Raspbian 기반)은 gitbash 완료 설정을 패키지로 배포합니다. 이러한 기능은 /etc/bash_completion.d/gitbash의 다른 명령 완성 지원과 동일한 디렉터리에 있습니다 .

모든 파일은 Debian에서 기본적으로 로드되는 /etc/bash_completion.dbash 프로그래밍 가능 완성 설정의 일부로 로드됩니다. 명령별 완성을 원하지 않으면 편집할 수 있습니다./etc/bash_completion.bashrc/etc/bash_completion

git을 사용하지 않는 경우 패키지를 제거하세요 git. 패키지가 설치되어 있으면 아마도 이 명령을 때때로 git실행할 것이므로 잘 수행할 수 있기를 바랍니다. git"저는 git을 거의 사용하지 않고 몇 킬로바이트의 RAM을 절약하고 싶습니다." 이 구별은 데비안에서도 너무 미묘합니다.

완성 파일을 건너뛰고 다른 파일을 사용하려면 다음을 수행하세요.옮기다파일 이름 때문에 건너뛰게 됩니다 /etc/bash_completion. 파일 전송은 패키지 관리자에게 다른 위치에 있는 파일에 업데이트 및 삭제를 적용하도록 지시하는 방법입니다.

dpkg-divert --add --local --rename --divert /etc/bash_completion.d/git.dpkg-diverted /etc/bash_completion.d/git

답변2

로그인 시 전역 스크립트와 사용자별 스크립트( /etc/profile, $HOME/.profile, $HOME/.bash_profile, )가 포함되어 있습니다 $HOME/.bash_login.

대부분의 배포판에서 특정 디렉터리의 내용( /etc/env.d/*이와 비슷하거나 비슷한 것)은 전역 스크립트에 포함되는 경우가 많습니다. 여기서 패키지는 로그인할 때마다 선택되는 자체 환경 설정 스크립트를 넣을 수 있습니다.

관련 정보