내 환경에서 명령을 사용하여 module
항목을 로드 및 언로드하는데, 내가 사용하는 일부 시스템에는 올바른 자동 완성 기능이 있고 다른 시스템에는 없습니다.
완성본이 어디서 왔는지 알 수 있고, 다른 곳에 설치할 수 있는지 궁금합니다.
답변1
내장된 명령을 사용하여 명령의 완료 코드를 표시할 수 있습니다 complete
. 예는 다음과 같습니다.
$ complete -p ls
complete -F _longopt ls
그 기능에 관심이 있다면 내장 함수를 _longopt
사용할 수 있습니다 .type
$ type -a _longopt
_longopt is a function
_longopt ()
{
local cur prev words cword split;
_init_completion -s || return;
case "${prev,,}" in
--help | --usage | --version)
----- snip ------
기능이라면 HairOfTheDog가 지적한 솔루션을 사용할 수 있습니다.여기:
# Turn on extended shell debugging
shopt -s extdebug
# Dump the function's name, line number and fully qualified source file
declare -F _longopt
# Turn off extended shell debugging
shopt -u extdebug
Bash는 초기화 중에 환경 변수나 함수가 정의된 위치를 확인할 수 없습니다.
그렇지 않으면 bash가 실행 중인 내용에 대한 정보를 얻을 수 있습니다 -x
.
bash -x -i -l
그러면 디버그 모드에서 대화형 로그인 셸이 실행되고 실행된 모든 줄이 표시됩니다. 출력에서 함수 정의가 발견되면 source
해당 정의 이전의 마지막 또는 명령을 찾을 수 있습니다..