有时我使用$PROJECT_HOME/*
来删除项目中的所有文件。如果PROJECT_HOME
未设置环境变量(因为我设置了环境变量,su
并且新用户未设置此环境变量),它将开始从根文件夹中删除所有文件。这是世界末日。
bash
在外壳中使用未定义的环境变量时,如何配置抛出错误?
当然,您不会将var初始化为空字符串。
—
PSkocik 2015年
[ -z "$VAR" ]
也可以与未初始化的一起使用VAR
。初始化只是为了显示不良行为-我的意思是,如果您的var确实以任何方式初始化为空字符串,而您rm -r "$PROJECT_HOME"/*
错误地依赖运行set -u
,您将得到“世界末日”的行为。IHMO,比起后悔,保护计算机的全部内容要好。set -u
不安全。
“很长”?您不应该寻找手动执行危险操作的简便方法。相反,您应该创建函数,别名或脚本来执行所需的操作。在这种情况下,使用@PSkocik的建议命令创建别名既安全又方便。
—
凯尔·斯特兰德
如果用户设置该
—
Barmar 2015年
PROJECT_HOME=/etc
怎么办?仅检查一个空值还不足以防止灾难。以root身份运行时,不应使用不受信任用户的变量。
set -u
会做你想要的。