O que a opção --tty-only faz?

O que a opção --tty-only faz?

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 whichpá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-onlyserão levadas em consideração somente quando a saída for um tty.

Responder2

Isso significaria que se a saída for whichdoesnãoconsulte um terminal e façanãoprocesso --read-alias, --show-dote --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:

informação relacionada