当我使用ignoreeof
内置函数时set
,我意识到“IGNOREEOF = n”变量和“ignoreeof = n”单词可以用于限制。例如;
└─$ bash
└─$ set -o ignoreeof
└─$ IGNOREEOF=2
└─$
Use "exit" to leave the shell.
└─$
Use "exit" to leave the shell.
└─$
exit
└─$ bash
└─$ set -o ignoreeof
└─$ ignoreeof=2
└─$
Use "exit" to leave the shell.
└─$
Use "exit" to leave the shell.
└─$
exit
我知道 ”忽略EOF=n“是可变的,但我不知道是什么”忽略=n“。我被看着set
并env
输出,”忽略EOF“有但是”忽略“ 不是。
答案1
手册页提到了set -o ignoreeof
这一点:
效果就像执行了 shell 命令 'IGNOREEOF=10'
实际上,这很字面意思:
$ echo $IGNOREEOF
$ set -o ignoreeof
$ echo $IGNOREEOF
10
做相反的事情,set +o ignoreeof
取消设置IGNOREEOF
,并且SHELLOPTS
似乎包含ignoreeof
何时IGNOREEOF
设置(无论它是通过分配给它还是设置set -o ignoreeof
)。 (我用 Bash 4.4 进行了测试。)
小写变量ignoreeof
可能没有什么特别的作用。
尽管很奇怪,小写变量ignoreeof
似乎是某种未记录的与大写变量等效的变量。因此,更改任一更改都会更改所需的 EOF 计数,我想这就是您在第二个示例中遇到的情况。
根据维护者的说法, 小写的
存在只是为了向后兼容;它已被弃用并且已经存在多年了
但总的来说,set -o
标志和变量是不同的东西。