如何检测系统是否在 UNIX shell 脚本中启用了 IPv6?

How to detect if system has IPv6 enabled in a UNIX shell script?

我有一个 shell 脚本,它正在各种 POSIX 环境中执行,例如 Linux、Mac OSX 甚至 Cygwin。该脚本需要可靠地检测给定系统是否启用了 IPv6。例如。我至少可以使用 IPv6 本地环回 (::1)。 所以问题是: 如何检测系统是否以 POSIX 兼容的方式在 UNIX shell 中启用了 ipv6?

这可以通过检查 /proc/net/if_inet6 是否存在来测试,如下所示:

test -f /proc/net/if_inet6 && echo "IPv6 supported" || echo "IPv6 not supported"

我已经在 Windows 中的 Ubuntu、Mint、Raspberry PI 和 Bash shell 上对其进行了测试,它可以在所有这些环境中运行。