set和shopt都是控制各种选项的shell内置程序。我经常忘记哪个选项是由哪个命令设置的,以及哪个选项集/取消集(set -o/+o,shopt -s/-u)。为什么有两个不同的命令看起来做同样的事情(并且有不同的参数来这么做)?有什么简单的方法/助记符来记住哪个选项与哪个命令匹配吗?
发布于 2012-02-23 02:06:42
据我所知,set -o选项是从其他Bourne风格的shell(主要是ksh)继承的,而shopt选项是特定于bash的选项。据我所知没有逻辑可言。
发布于 2014-03-06 09:47:44
set是POSIX 7:设置或取消设置选项和位置参数shopt不是:pubs.opengroup.org \外壳和实用程序:详细的可能和@吉尔斯提到的历史有联系。
发布于 2018-02-21 10:31:16
来自"Linux Shell脚本与Bash“一书,第63页:
历史上,
set命令用于打开和关闭选项。随着选项数量的增加,set变得更加难以使用,因为选项是由单个字母代码表示的。因此,Bash提供了shopt(shell选项)命令,通过名称来打开和关闭选项,而不是字母。您只能通过信函设置某些选项。其他的只能在shopt命令下使用。这使得查找和设置特定选项成为一项令人困惑的任务。
https://unix.stackexchange.com/questions/32409
复制相似问题