システム管理者が次のグローバル エイリアスを作成したことに気付きました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
オプションは、例えばデビアン: