【发布时间】:2020-12-12 13:47:59
【问题描述】:
我有一个第三方 shell 函数正在尝试使用 tty -s 来检测它是否是从交互式 shell 调用的,但报告它在交互式 shell 中,即使它不是。
#!/usr/bin/env bash
get_shell_type() {
tty -s && echo "INTERACTIVE" || echo "NON-INTERACTIVE"
}
为什么这会起作用?我该如何解决?
【问题讨论】:
-
这是一个检测shell是否交互的尝试。
-
是的,我可以猜到,但我不明白它是如何做到的。当我在同一个脚本中调用 get_shell_type 时,它不是返回“INTERACTIVE”。
-
我建议
bash:[[ $- =~ i ]] && echo "INTERACTIVE" || echo "NON-INTERACTIVE" -
man tty告诉你了吗? -
我投票结束这个问题,因为它要求猜测其他人的想法。除了原作者,没有人确切地知道他们的意图是什么,以及为什么他们编写了这个(错误的)代码而不是正确的实现。
标签: bash