type 명령의 이상한 동작

type 명령의 이상한 동작

나는 가끔 사용한다명령을 입력하다내 코드를 확인하세요.

$ type squared
squared is a function
squared ()
{
    local t=$(($1*$1));
    echo $t
}

내장 함수를 사용하여 동일한 작업을 수행할 수 있습니다.

$ type __expand_tilde_by_ref
__expand_tilde_by_ref is a function
__expand_tilde_by_ref ()
{
    if [[ ${!1-} == \~* ]]; then
        eval $1="$(printf ~%q "${!1#\~}")";
    fi
}

하지만 이 명령을 이 스크립트에 넣으면:

$ cat testit.sh
#!/bin/bash
source  ~/bin/all-my-functions.sh
type squared
type __expand_tilde_by_ref

그리고 실행하세요:

$ ./testit.sh

나는 얻다:

squared is a function
squared ()
{
    local t=$(($1*$1));
    echo $t
}
./testit.sh: line 4: type: __expand_tilde_by_ref: not found

내장된 명령을 인식하지 못합니다. 왜?

유형을 확인했는데 별칭이 아닙니다.

$ type -t type
builtin

답변1

__expand_tilde_by_ref/etc/bash_completion(실제로 는)에 정의 되어 있을 수 있습니다 /usr/share/bash-completion/bash_completion. 당신의 것을 보면 스크립트 파일이 아닌 ~/.bashrc대화형 쉘인 경우에만 포함되어야 하는 몇 가지 줄이 있습니다 ./etc/bash_completion

관련 정보