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

おすすめ記事