which の --tty-only オプションは何をしますか?

which の --tty-only オプションは何をしますか?

システム管理者が次のグローバル エイリアスを作成したことに気付きましたwhich:

alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

マンwhichページには次のように書かれています:

tty 上でない場合は右側のオプションの処理を停止します。

これはどういう意味ですか?

答え1

設定:

$ /usr/bin/which --show-dot a
./a
$ /usr/bin/which --show-tilde a
~/a

.対話的に実行したときのバージョンとリダイレクトされたときのバージョンが必要な場合は~、これをエイリアスとして使用できます。

/usr/bin/which --show-tilde --tty-only --show-dot

デモ:

# interactive / on a tty
$ /usr/bin/which --show-tilde --tty-only --show-dot a
./a
# not interactive / redirected to a file
$ /usr/bin/which --show-tilde --tty-only --show-dot a > output
$ cat output 
~/a

後に指定するすべてのオプションは、--tty-only出力が tty の場合にのみ考慮されます。

答え2

whichつまり、出力がない端末を参照して、ないプロセス--read-alias--show-dotおよび--show-tilde

通常、パイプ、通常のファイルなどの場合。

which watch | foo # not a tty
which watch > foo # not a tty
which watch       # tty
which watch >&2   # tty

オプションは、例えばデビアン:

関連情報