On Wed, Feb 15, 2023 at 10:25:21PM +0900, 長南洋一 wrote: > 1. --read-alias, -i > Read aliases from stdin, reporting matching ones on stdout. This is > useful in combination with using an alias for which itself. For ex‐ > ample > [試訳 1] > 標準入力からエイリアスを読み込んで、引数に一致するものを標準出力に書き > 出します。このオプションは、which コマンドの代わりに使うエイリアスで > 使用するとよいでしょう。たとえば、次のようにです。 > alias which='alias | which -i' > > あるいは、 > [試訳 2] > 標準入力からエイリアスを読み込んで、引数に一致するものを標準出力に > 書き出します。このオプションは、which コマンドの代わりにエイリアスを > 使用する場合に、その中で使うとよいでしょう。たとえば、次のようにです。 > alias which=´alias | which -i´ 試訳1 の方がすっきりした感じがします。 > 2. --skip-alias > Ignore option `--read-alias´, if any. This is useful to explicity > search for normal binaries, while using the `--read-alias´ option > in an alias or function for which. > > [訳文] > `--read-alias´ が指定されても無視します。 which に対するエイリアス > や関数の中で `--read-alias´ オプションを利用している場合であって > も、 明示的に通常の実行ファイルを検索する場合に利用できます。 > > この場合、for を「対する」と訳すのは、間違いとは言えません。しかし、「対する」 > は多義的なので、「which の代わりに使うエイリアス」の意味だと、読者に理解して > もらえないかもしれません。 > > [試訳] > `--read-alias´ オプションが指定されていても、それを無視します。 > このオプションは、which コマンドの代わりに使うエイリアスや関数で > `--read-alias´ オプションを使用している場合に、明示的に通常の > バイナリを探すのに役に立ちます。 これで良いかと思います。 > 3. EXAMPLE > The recommended way to use this utility is by adding an alias (C shell) > or shell function (Bourne shell) for which like the following: > > [訳文] > 例 > このユーティリティーのお薦めの使い方は、 which に対するエイリアス (C > シェル) やシェル関数 (Bourne シェル) を追加して利用する方法です。 たと > えば以下です。 > > ここでも、"for which" の訳が「which に対する」になっています。それに、 > 「which に対するエイリアスやシェル関数を追加して利用する方法」というのは、 > 何に追加するんでしょう。イマイチ意味が取りにくいと思います。 > > [試訳 1] > 用例 > このユーティリティの使用に当たっては、以下のように、which コマンドの > 代わりに使用するエイリアスか (C shell の場合)、シェル関数を (Bourn > shell の場合) 追加登録しておくことをおすすめします。 > > 何に追加するかをもっとはっきりさせるなら、こうなります。 > > [試訳 2] > このユーティリティの使用に当たっては、以下のように、エイリアスか > (C shell の場合) シェル関数に (Bourn shell の場合)、which > コマンドの代わりに使用するものを追加しておくことをおすすめします。 試訳2の方がすっきりしていると思います。 > > なお、EXAMPLE を「例」と一字に訳すのは、セクションの見出しとして落ち着きが > 悪いと思います。「用例」とか「実例」とか、二字にした方がよいのではありま > せんか。 特に1文字でも違和感は感じません。 > ○ 重大だが、"alias for which" とは別の問題 (むしろ、原文の問題です) > > 1. EXAMPLE の最後の部分 (関数、エイリアスの実例と実行例の間のパラグラフ) > > This will print the readable ~/ and ./ when starting which from your > prompt, while still printing the full path when used from a script: > > [訳文] > こうすることで、プロンプトから実行した場合には、見やすいように ~/ や ./ > を出力します。 スクリプトから利用した場合には、そのままフルパスで出力 > します。 > [試訳] > このようにしておくと、which をプロンプトから実行したときには、パスを ~/ > や ./ という読みやすい形で表示しますが、スクリプトから使用した場合には、 > 通常通りフルパスの表示になります。(あるいは、「--show-dot や --show-tilde > があっても、フルパスの表示のままです」と still を展開して訳す手もあります。) > > > which q2 > ~/bin/q2 > > echo `which q2` > /home/carlo/bin/q2 > > [訳注] 実際には、こうした関数やエイリアスを端末のプロンプトから > 実行しようと、 スクリプトから実行しようと、表示に変わりは > ありません。出力先が、標準出力や標準エラーか、それ以外かで > 違いが生じるようです (上記二番目の実行例では、標準入力に > 出力しています)。 念のため、ご自分でお試しください。 実際の動作が異なるのであれば、訳注を付けるのは良いと思います。 > 2. BUGS > > The HOME directory is determined by looking for the HOME environment > variable, which aborts when this variable doesn´t exist. Which will > consider two equivalent directories to be different when one of them > contains a path with a symbolic link. > > [訳文] > HOME ディレクトリは、環境変数 HOME を調べることで決定されますが、この変 > 数が存在しない場合には、その処理がキャンセルされます。which は 2 つの同 > 等のディレクトリであっても、その 1 つにシンボリックリンクを使ったパスが > 含まれている場合に、別のディレクトリと取り扱ってしまいます。 > > [試訳] > HOME ディレクトリの特定は、環境変数 HOME を調べることで行われますが、 > 変数 HOME が存在しない場合は、この特定作業は打ち切られます。また、which は、 > 二つのディレクトリが同じものであっても、 片方のパスにシンボリックリンクが > 含まれている場合は、別のディレクトリと見なすことになります。 > > [訳注] 前半の記述は古いようです。パッケージ同梱の NEWS ファイルによれば、 > which-2.19 以来、環境変数 HOME が設定されていない場合は、 > /etc/passwd ファイルが調べられ、そこでも指定されていない場合は、 > '/' がホームディレクトリになるとのことです。 試訳と訳注の追加で良いと思います。 > ○ DESCRIPTION から > > Which takes one or more arguments. For each of its arguments it prints > to stdout the full path of the executables that would have been exe‐ > cuted when this argument had been entered at the shell prompt. It does > this by searching for an executable or script in the directories listed > in the environment variable PATH using the same algorithm as bash(1). > > [訳文] > which は 1 つまたは複数の引数を取ります。 その引数それぞれに対して、そ > の引数がシェルプロンプトから入力された際に、実行されることになる実行モ > ジュールのフルパスを stdout に出力します。 これを実現する際には、環境変 > 数 PATH に列記されたディレクトリ内から実行ファイルやスクリプトを検索し > ます。 これは bash(1) と同じアルゴリズムを用いています。 > > [試訳] > which は、ひとつ以上の引数を取り、そうした引数のそれぞれについて、それが > シェルプロンプトから入力された場合に、実行されていたであろう実行ファイル > のフルパスを標準出力に書き出します。which は、それを行うに当たり、 > bash(1) と同じアルゴリズムを使用して、環境変数 PATH にリストされた > ディレクトリを調べ、実行ファイルやスクリプトを捜します。 s/ひとつ/一つ/ の方が好みです。 > ○ --all, -a > Print all matching executables in PATH, not just the first. > > [訳文] > PATH 内に見つかった実行ファイルすべてを表示します。 最初に見つかっ > たもの以外も表示します。 > [試訳] > PATH 中で最初に引数に一致したものだけでなく、一致したすべての実行 > ファイルを表示します。 試訳で良いと思います。 > ○ --skip-dot > Skip directories in PATH that start with a dot. > > [訳文] > PATH 内のディレクトリのうち、ドットで始まるディレクトリは除外します。 > [試訳] > PATH 中のドット (.) 1 個のディレクトリから始まるパスをスキップします。 > > [訳注] 環境変数 PATH に ’.’ や (ありそうにないことですが) ’./bin’ などが > 登録されている場合のことを言っています。’$HOME/.local' といった > ディレクトリのことではありません。そのへんの事情は、‘--show-dot’ > でも同じです。 試訳+訳注 で良いと思います。 > ○ --show-tilde > Output a tilde when a directory matches the HOME directory. This > option is ignored when which is invoked as root. > > [訳文] > ディレクトリが HOME に合致した場合、チルダを表示します。 このオプ > ションは root ユーザーが実行した際には無視されます。 > > [試訳] > ディレクトリに HOME ディレクトリと一致する部分があるときは、 > チルダを出力します。 このオプションは、which が root の権限で実行 > されている場合には無視されます。 s/root の権限で/root 権限で/ の方が好みです。 > ○ --tty-only > Stop processing options on the right if not on tty. > > [訳文] > tty 上でない場合、この右側に指定されたオプションの実行を停止します。 > > [試訳] > 出力が端末でない場合は、これより右にあるオプションの処理を行いません。 > > [訳注] このオプションに効果があるのは、'--show-dot' と '--show-tilde' > に対してだけのようです。 試訳+訳注 で良いと思います。 > ○ RETURN VALUE > Which returns the number of failed arguments, or -1 when no `program‐ > name´ was given. > > [訳文] > which は検索に失敗した引数の数を返します。 また `programname´ が指定さ > れなかった場合は -1 を返します。 > > 「書式」セクションから離れすぎているので、programname が唐突な気がします。 > 「引数に 'programname' が指定されなかった場合には、」と「引数に」を補った > 方がよいと思います。また、「また」はなくてもよさそうです (あってもよいけれど)。 「引数に」を入れますか? ribbon