쉘 변수와 함수가 어디에 설정되어 있는지 어떻게 알 수 있나요?

쉘 변수와 함수가 어디에 설정되어 있는지 어떻게 알 수 있나요?

set시스템에 명령을 입력하면 다음과 같은 내용이 발췌됩니다.

__colormgr_commandlist='
    create-device
    create-profile
    delete-device
    delete-profile
    device-add-profile
    device-get-default-profile
    device-get-profile-for-qualifier
    device-inhibit
    device-make-profile-default
    device-set-kind
    device-set-model
    device-set-serial
    device-set-vendor
    find-device
    find-device-by-property
    find-profile
    find-profile-by-filename
    get-devices
    get-devices-by-kind
    get-profiles
    get-sensor-reading
    get-sensors
    get-standard-space
    profile-set-filename
    profile-set-qualifier
    sensor-lock
    sensor-set-options
    '
__grub_script_check_program=grub-script-check
_backup_glob='@(#*#|*@(~|.@(bak|orig|rej|swp|dpkg*|rpm@(orig|new|save))))'
_xspecs=([freeamp]="!*.@(mp3|ogg|pls|m3u)" [cdiff]="!*.@(dif?(f)|?(d)patch)?(.@([gx]z|bz2|lzma))" [bibtex]="!*.aux" [rgview]="*.@(o|so|so.!(conf|*/*)|a|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [oowriter]="!*.@(sxw|stw|sxg|sgl|doc?([mx])|dot?([mx])|rtf|txt|htm|html|?(f)odt|ott|odm)" [chromium-browser]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [tex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [netscape]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))"
.../..
_xinetd_services () 
{ 
    local xinetddir=/etc/xinetd.d;
    if [[ -d $xinetddir ]]; then
        local restore_nullglob=$(shopt -p nullglob);
        shopt -s nullglob;
        local -a svcs=($( printf '%s\n' $xinetddir/!($_backup_glob) ));
        $restore_nullglob;
        COMPREPLY+=($( compgen -W '${svcs[@]#$xinetddir/}' -- "$cur" ));
    fi
}
dequote () 
{ 
    eval printf %s "$1" 2> /dev/null
}
quote () 
{ 
    local quoted=${1//\'/\'\\\'\'};
    printf "'%s'" "$quoted"
}
quote_readline () 
{ 
    local quoted;
    _quote_readline_by_ref "$1" ret;
    printf %s "$ret"
}

/etc/profile, /etc/environment및/또는 등 내가 알고 있는 모든 파일을 확인했지만 ~/.bashrc빌드 스크립트나 코드 호출을 찾지 못했습니다.

그게 어디서 나온 조언이 있나요?

답변1

함수의 경우 Bash는 함수의 출처를 알려줄 수 있습니다.

$ help declare
...
  -F        restrict display to function names only (plus line 
            number and source file when debugging) 

$ shopt -s extdebug
$ declare -F quote_readline
quote_readline 150 /usr/share/bash-completion/bash_completion

(제가 이걸 발견한 건stackoverflow에 대한 답변.)

환경 변수를 찾는 좋은 방법은 다음과 같습니다.환경 변수의 출처를 확인하는 방법

이러한 기능의 대부분은 명령줄 완성과 관련된 것으로 보이며 내 Ubuntu 시스템에는 /usr/share/bash-completion/위와 같이 해당 기능이 포함되어 있습니다.

FWIW, __colormgr_commandlist완료와도 관련이 있는 것 같습니다. 이를 포함하는 스크립트가 있습니다.여기.

관련 정보