ご意見ありがとうございます。いろいろあって、やっと終わりました。 > which () { declare -f | \which --read-functions $@; } > export -f which > みたいな書き方ではダメですか? ああ、その手があったか、と思って、試してみました。 やっぱり、ループしてしまうようです (今回は出力を長い間待たず、2,3 秒後に Ctrl-C を押したので、Alt-SysRq-b をやらないで済みましたが)。 man bash の「エイリアス」の項に ... 各コマンドの最初の単語がクォートされていない場合、エイリアスか どうかが確認され、エイリアスならばその単語はそのエイリアスのテキスト と置換されます。 と書いてありますから、先頭にバックスラッシュを付けることによって「これは 実行可能ファイルだよ」と指定することができるのは、エイリアスに対してだけ なのかもしれません。 /usr/bin/which を選んだのは、原文の "which () { declare -f | which --read-functions $@; }" は、例を挙げているだけですから、which のパスは 一番素直そうなものを使っておけばよいだろうと考えたからです。また、「用例」 セクションでは、原文が "... (alias; declare -f) | /usr/bin/which --tty-only ..." になっているので、それに合わせたということもあります。 > Linuxの場合は「which といえば GNU which が当たり前」ですが、環境によっては、 > ・ベンダーが独自にメンテナンスしている版の which コマンドを、 > /bin/which または /usr/bin/which に置く。 > ・マシンの管理者があえて GNU which を追加インストールする場合、 > デフォルトでは /usr/local/bin/which にインストールされる。 > といったことも考えられます。 ええ、ユーザが使っている which が、GNU_which 以外である可能性は 十分にあります。ですから、GNU_which の info や man の翻訳には、 「これは GNU_which のマニュアルです。動作がほかの系統のものとは 違うかもしれません」という断り書きを付けた方がよいと思うのです。 ちなみに、debian の which は debianutils パッケージ所収で、 bash の builtin の type の方が高機能なくらいなものです。 うちでは、GNU_which は、検証用に /usr/local/bin に入れてあります。 -- 長南洋一