Me acabo de dar cuenta de que mi administrador de sistemas ha creado un alias global para which
:
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
La which
página de manual simplemente dice:
Detenga las opciones de procesamiento a la derecha si no están en tty.
¿Qué quiere decir esto?
Respuesta1
Configuración:
$ /usr/bin/which --show-dot a
./a
$ /usr/bin/which --show-tilde a
~/a
Si desea la .
versión cuando se ejecuta de forma interactiva, pero la ~
versión cuando se redirige, puede usar esto como alias:
/usr/bin/which --show-tilde --tty-only --show-dot
Manifestación:
# 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 las opciones que especifique después --tty-only
se tienen en cuenta solo cuando la salida es un tty.
Respuesta2
Eso significaría que si la salida para which
nonoconsulte una terminal, luego haganoproceso --read-alias
, --show-dot
y --show-tilde
.
Normalmente si se trata de una tubería, una lima normal, etc.
which watch | foo # not a tty
which watch > foo # not a tty
which watch # tty
which watch >&2 # tty
Las opciones no se reconocen en, por ejemplo,debian: