Acabei de perceber que meu administrador de sistema criou um alias global para which
:
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
A which
página de manual apenas diz:
Pare as opções de processamento à direita se não estiver em tty.
O que isto significa?
Responder1
Configurar:
$ /usr/bin/which --show-dot a
./a
$ /usr/bin/which --show-tilde a
~/a
Se você quisesse a .
versão quando executada interativamente, mas a ~
versão quando redirecionada, você poderia usar isso como um alias:
/usr/bin/which --show-tilde --tty-only --show-dot
Demonstração:
# 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
Todas as opções especificadas a seguir --tty-only
serão levadas em consideração somente quando a saída for um tty.
Responder2
Isso significaria que se a saída for which
doesnãoconsulte um terminal e façanãoprocesso --read-alias
, --show-dot
e --show-tilde
.
Normalmente, se for para um tubo, arquivo comum, etc.
which watch | foo # not a tty
which watch > foo # not a tty
which watch # tty
which watch >&2 # tty
As opções não são reconhecidas, por exemplo,debian: