1. ホーム
  2. bash

[解決済み] zshの関数定義を表示する方法(bashの "type myfunc "のように)?

2023-05-27 21:01:50

質問

zsh で関数の定義を表示するにはどうしたらよいですか。 type foo は定義を与えません。

bashでは

bash$ function foo() { echo hello; }

bash$ foo
hello

bash$ type foo
foo is a function
foo () 
{ 
    echo hello
}

zshで。

zsh$ function foo() { echo hello; }

zsh$ foo
hello

zsh$ type foo
foo is a shell function

どのように解決するのですか?

zsh のイディオムは whence というものです。 -f フラグは関数定義を表示します。

zsh$ whence -f foo
foo () {
    echo hello
}
zsh$

zshでは type と同等と定義されます。 whence -v と定義されていますので、引き続き type を使用することもできますが、その場合は -f という引数があります。

zsh$ type -f foo
foo () {
    echo hello
}
zsh$

そして、最後に、zshで which と等価であると定義されています。 whence -c - 印刷結果は csh的 の形式で出力します。 which foo を使っても同じ結果になります。

man zshbuiltins を使えば、すべて