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

这些选项在例如下不被识别德比安:

相关内容