我听说(虽然我找不到任何证据来源)在旧的 Unix shell 中可能未设置 USER 环境变量(甚至一些不太知名的 shell 也可能如此)。不设置的概率是多少?
答案1
这个概率很低。
如果你想要在编写脚本时回退:
USER=${USER:-`whoami`}
...如果未设置,将默认为 $USER。
对于非常老的 POSIX 之前的 Bourne shell,您需要:
test -z "$USER" && USER=`whoami`
答案2
那么,您是否希望使用任何旧的 shell,或者您是否希望您的程序的用户这样做?
无论如何,总是有的id -un
,尽管我不知道这是否比 $USER 更通用或更不通用。您可以让脚本尝试两者。