[JM:03939] Re: [POST:RO] GNU_which の info マニュアル

Back to archive index
長南洋一 cyoic****@maple*****
2023年 7月 3日 (月) 18:42:07 JST


ご意見ありがとうございます。いろいろあって、やっと終わりました。

>    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 に入れてあります。

-- 
長南洋一



linuxjm-discuss メーリングリストの案内
Back to archive index