Gnu가 파일 경로 대신 스크립트를 표시하는 이유는 무엇입니까?

Gnu가 파일 경로 대신 스크립트를 표시하는 이유는 무엇입니까?

사용할 때 다음과 같은 결과가 나타납니다.which

[user@localhost ~]$ which gem
gem ()
{ 
    \typeset result;
    ( \typeset rvmrc;
    rvm_rvmrc_files=("/etc/rvmrc" "$HOME/.rvmrc");
    if [[ -n "${rvm_prefix:-}" ]] && ! [[ "$HOME/.rvmrc" -ef "${rvm_prefix}/.rvmrc" ]]; then
        rvm_rvmrc_files+=("${rvm_prefix}/.rvmrc");
    fi;
    for rvmrc in "${rvm_rvmrc_files[@]}";
    do
        [[ -s "${rvmrc}" ]] && source "${rvmrc}" || true;
    done;
    unset rvm_rvmrc_files;
    command gem "$@" ) || result=$?;
    hash -r;
    return ${result:-0}
}

이전에 표시 별칭을 본 적이 있지만 whichbash 스크립트는 본 적이 없습니다.

스크립트는 분명히 RVM에서 제공되지만 어떻게 들어가고 which내 파일 시스템에서 어디에서 찾을 수 있습니까? 그것은 거기에 없습니다 .bashrc.

답변1

이 시도:

shopt -s extdebug
declare -F gem

에서 man builtins:

extdebug
    If set, behavior intended for use by debuggers is enabled:
    1.     The -F option to the declare builtin displays the source file
           name and line number corresponding to each function name sup‐
           plied as an argument.

관련 정보