manifestor Asked: 2018-05-10 12:24:13 +0800 CST2018-05-10 12:24:13 +0800 CST 2018-05-10 12:24:13 +0800 CST Bash:'[[' 也是像 '[' 这样的程序吗? 772 测试条件[是一个程序,它驻留在/usr/bin/[. 我想知道其他条件测试器[[是否也是一个程序? 我问的原因:我授予sudo某个用户权限让他触发一个shell脚本。至于安全原因,我将添加该脚本中使用的每个程序(echoto/bin/echo和[to /usr/bin/[)的完整路径,以便用户无法更改他PATH以使用他自己的程序。现在我想知道我是否也必须改变[[。 linux bash 1 个回答 Voted Best Answer Hauke Laging 2018-05-10T12:32:51+08:002018-05-10T12:32:51+08:00 man bash 保留字 保留字是对 shell 具有特殊含义的字。以下字在不加引号时被识别为保留字,并且是简单命令的第一个字(参见下面的 SHELL GRAMMAR)或 case 或 for command 的第三个字: !case coproc do done elif else esac fi for function if in select then until while { } time [[ ]] 保留字也是如此,因此[[不能是外部命令。不过,可能有这样一个文件,但必须使用完整路径或引号调用它。 即使有这样一个外部命令,它也不会以同样的方式工作,因为[[作为 shell 语法的一部分,解析规则会改变直到下一个]]。外部命令无法做到这一点。
man bash
保留字也是如此,因此
[[
不能是外部命令。不过,可能有这样一个文件,但必须使用完整路径或引号调用它。即使有这样一个外部命令,它也不会以同样的方式工作,因为
[[
作为 shell 语法的一部分,解析规则会改变直到下一个]]
。外部命令无法做到这一点。