zsh では `declare -F` は動作しません。

zsh では `declare -F` は動作しません。

declare -fBash と zsh に関数定義を表示します。

$ declare -f
VCS_INFO_adjust () {
    # undefined
    builtin autoload -XUz
}
VCS_INFO_bydir_detect () {
    # undefined
    builtin autoload -XUz
}
VCS_INFO_check_com () {
    setopt localoptions NO_shwordsplit
    case $1 in
        (/*) [[ -x $1 ]] && return 0 ;;
        (*) (( ${+commands[$1]} )) && return 0 ;;
    esac
    return 1
}
....

declare -F表示される関数名はbashですが、zshにはありません。

blueray@blueray-PC:~$ declare -F
declare -f __expand_tilde_by_ref
declare -f __get_cword_at_cursor_by_ref
declare -f __git_eread
declare -f __git_ps1
declare -f __git_ps1_colorize_gitstring
declare -f __git_ps1_show_upstream
declare -f __grub_dir
declare -f __grub_get_last_option
....

その理由は何ですか?

ベストアンサー1

Zshではdeclare -F倍精度浮動小数点変数宣言:

$ declare -F myvar
$ echo $myvar
0.0000000000

Zshのすべての関数名を一覧表示するにはtypeset -f +

では、特別な連想配列は関数名をその定義にマップして次のように拡張できますzsh$functions${(k)functions}連想配列は関数名のリストにも拡張されます。

BashとZshは異なるシェルなので、まったく同じように動作するとは予想できません。

おすすめ記事