我有一个 bash 脚本,它在 cron 作业中每晚运行。它需要做不区分大小写的文件匹配,所以脚本调用
shopt -s nocaseglob
Run Code Online (Sandbox Code Playgroud)
我想确保这不会影响其他 cron 脚本。在此脚本结束后,此设置是否仍然存在?还是仅在脚本运行期间启用此设置?
谢谢!
设置选项shopt
是 shell 设置。它只影响您运行它的 shell 实例:它是 shell 进程和由$(…)
,(…)
和类似构造调用的子shell的本地。它对并发或稍后执行的其他 shell 脚本没有影响,甚至对碰巧从该脚本执行的命令执行的独立 bash 脚本也没有影响。
这同样适用于变量的值和类型,只要它们没有被导出。也可以有一个函数的局部变量;选项始终是全局的,从某种意义上说,如果您在函数中设置它们,它们会在函数返回时保留在原位。
环境变量(即导出变量)、I/O 重定向、资源限制、umask、当前目录和许多其他设置适用于当前 shell 进程以及所有子进程(即该脚本调用的所有命令)。它们也不会逃逸到可能并发执行的无关进程。